Google api nodejs client 从刷新令牌获取新访问令牌的当前方法
我在Google API Node.js客户端OAuth API(例如和)中看到了一些与此相关的问题,这些解决方案似乎已被弃用 我看不到关于使用刷新令牌获取新访问令牌()的文档,有人提到要退出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
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()
,并且更新的令牌在响应中。再次感谢你的帮助!