Google api nodejs client 从刷新令牌获取新访问令牌的当前方法

Google api nodejs client 从刷新令牌获取新访问令牌的当前方法,google-api-nodejs-client,google-my-business-api,Google Api Nodejs Client,Google My Business Api,我在Google API Node.js客户端OAuth API(例如和)中看到了一些与此相关的问题,这些解决方案似乎已被弃用 我看不到关于使用刷新令牌获取新访问令牌()的文档,有人提到要退出oauth2Client.credentials属性,但这似乎是对包中包装的其他API之一的调用 在我的用例中,我查询的是Google my Business(GMB)API,它没有包装在这里,但我使用这个包的OAuth部分来验证和获取我的令牌 我对GMB API的请求(使用请求承诺模块)如下所示: fun

我在Google API Node.js客户端OAuth API(例如和)中看到了一些与此相关的问题,这些解决方案似乎已被弃用

我看不到关于使用刷新令牌获取新访问令牌()的文档,有人提到要退出
oauth2Client.credentials
属性,但这似乎是对包中包装的其他API之一的调用

在我的用例中,我查询的是Google my Business(GMB)API,它没有包装在这里,但我使用这个包的OAuth部分来验证和获取我的令牌

我对GMB API的请求(使用
请求承诺
模块)如下所示:

function getLocations () {
  return request({
    method: 'POST',
    uri: `${gmbApiRoot}/accounts/${acct}/locations:batchGet`,
    headers: {
      Authorization: `OAuth ${gmbAccessToken}`
    }
  })
  .then(function (response) {
    console.log(response);
  })
  .catch(function (err) {
    // ...
  });
}
我认为我不能像问题响应中那样将
oauth2Client
传递到头中进行授权。如果我在应用程序中缓存了刷新令牌,是否有办法直接请求新的
访问令牌

更新:已解决!谢谢贾斯汀的帮助。我的工作代码是这样的:

oauth2Client.setCredentials({
  refresh_token: storedRefreshToken
});

return oauth2Client.refreshAccessToken()
.then(function (res) {
  if (!res.tokens && !res.credentials) {
    throw Error('No access token returned.');
  }

  const tokens = res.tokens || res.credentials;

  // Runs my project-level function to store the tokens.
  return setTokens(tokens);
});

如果您有一个现有的oauth2客户机,则只需调用
setCredentials

oauth2client.setCredentials({
  refresh_token: 'REFRESH_TOKEN_YALL'
});
在通过客户端进行的下一次调用中,它将自动检测到没有访问令牌,注意刷新令牌,并将新的访问令牌与其过期日期挂起。在您在GitHub:P上打开的一期文章中,我概述了一些与此相关的文档和代码


希望这有帮助

我不太明白。我对客户端的唯一用途是获取令牌,所以我不确定下一个是什么。我唯一能想到的是
getToken
,它需要
code
。当最初授予授权时,我从重定向URL获得了
code
,但我这里没有。顺便说一下,感谢文档更新。我真的很感激,一切都准备好了!在auth-api-repo-README中,我看到有人提到我可以调用
oauth2Client.refreshAccessToken()
,并且更新的令牌在响应中。再次感谢你的帮助!