如何使用 nodejs 客户端库在 google 中使用 OAuth2Client 创建 postgresql 实例

how to create a postgresql instance using OAuth2Client in google using nodejs client library

我需要使用 google SQL admin API 创建 PostgreSQL 实例,为了进行身份验证,我想在节点 js 客户端库中使用 OAuth2Client

    function first() { 
           const oAuth2Client = new google.auth.OAuth2(
                  client_id,
                  client_secret,
                  redirect_uris[0]
                );
            var tkn = await oAuth2Client.getToken(code_from_another_user);
                oAuth2Client.setCredentials(tkn);
    return oAuth2Client;
   });
    function second(oAuth2Client)
    {
            var req = {
                 project: prjName,
                  resource: {
                    databaseVersion: "POSTGRES_13",
                    name: name,
                    region: cregion ,
                    gceZone: czone,
                    settings: {*****}
                    rootPassword: "xxxxx",
                  },
                  auth: oAuth2Client,
                };
                var crpsql = await sqlAdmin.instances.insert(req);
                return crpsql;
    });


function mainexec()
{
 var a = first();
var b = second(a);
});

我收到这个错误

Error: No access, refresh token, API key or refresh handler callback is set

实际上,我正在尝试在其他 google 帐户云平台上创建一个 PostgreSQL 实例,并同意使用 OAuth2Client 访问令牌方法。有人请帮忙吗?任何支持文件?

函数先 returns oAuth2Client 原样。但是在第二个函数中它会自动转换为 JSON 对象。 所以像这样更改了名为 second 的函数

function second(oAuth2Client)
    {
var newoAuth2Client = new google.auth.OAuth2(
      oAuth2Client._clientId,
      oAuth2Client._clientSecret,
      oAuth2Client.redirectUri
    );
    var tokenObj = {
      access_token: oAuth2Client.credentials.tokens.access_token,
      refresh_token: oAuth2Client.credentials.tokens.refresh_token,
    };
    newoAuth2Client.credentials = tokenObj;
            var req = {
                 project: prjName,
                  resource: {
                    databaseVersion: "POSTGRES_13",
                    name: name,
                    region: cregion ,
                    gceZone: czone,
                    settings: {*****}
                    rootPassword: "xxxxx",
                  },
                  auth:  newoAuth2Client,
                };
                var crpsql = await sqlAdmin.instances.insert(req);
                return crpsql;
    });

它像魔术一样奏效。