[英]How can I refresh an OAuth2 token? Do I need to wait for the token to Expire? (Patreon API)
我正在尝试使用Patreon的api进行OAuth。 我对OAuth流程非常陌生,一直在使用Patreon的Javascript包来帮助管理我的请求。
到目前为止,我已经能够通过以下方式成功获取令牌:
import * as patreon from 'patreon';
const patreonOAuthClient = patreon.oauth(clientId, clientSecret);
patreonOAuthClient.getTokens(oauthGrantCode, redirectURL).then((tokenResponse) => {
console.log(tokenResponse);
})
我收到的令牌如下所示:
// Example Token from getTokens()'s then()-response
tokenResponse = {
access_token: "UbHYT3H51GpeYueBeBuvBj1fnEFzv5A5870s_rYeMHo",
expires_in: 2678400,
refresh_token: "AP5aAw-gJbVf35tWxQb74rmJJz2MhwIYq660m0jiZQ4",
scope: "my-campaign pledges-to-me users",
token_type: "Bearer",
version: "0.0.1"
}
在我的本地服务器上,我试图使刷新令牌正常工作,所以我不必每个月都在征求用户的许可。
虽然使用刷新令牌方法时会收到400错误的请求:
patreonOAuthClient.refreshToken(tokenResponse).then(response => {
console.log(response, 'success!');
}).catch(err => {
console.log(err, ':(');
});
它没有显示在npm文档中,但是您可以在patreon的github源代码上找到refreshToken() 。
根据这里他们的api文件:
如果您希望在令牌过期后获取最新信息,则可能会发行新的令牌以用于下个月。 要刷新令牌,请按照示例中的授予类型使用refresh_token向令牌端点发出POST请求。 您也可以在“客户端”页面中的相应客户端上手动刷新令牌。
那是因为我需要等待一个月来刷新令牌而还是得到400的原因还是我只是错误地实现了API? 我希望有更多OAuth经验的人可以告诉我,是否应该在令牌过期之前或之后进行令牌刷新?
(如果您在过期之前刷新它,是否有某种方法可以安排快递服务器在该月过期之前进行设置?因为我认为为每个令牌添加一个超时时间确实对内存不利)。
我终于使SDK正常工作了。从源代码给人的印象是,令牌是从响应中接收到的对象。 但是事实证明令牌是字符串值。
所以:
// Using tokenResponse.refresh_token instead of just tokenResponse
patreonOAuthClient.refreshToken(tokenResponse.refresh_token).then(response => {
console.log(response, 'success!');
}).catch(err => {
console.log(err, ':(');
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.