首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何刷新OAuth2令牌?我需要等待令牌过期吗?(Patreon API)

如何刷新OAuth2令牌?我需要等待令牌过期吗?(Patreon API)
EN

Stack Overflow用户
提问于 2018-05-18 12:07:44
回答 1查看 180关注 0票数 2

我正在使用Patreon的api试用OAuth。我对OAuth过程非常陌生,并且一直在使用Patreon的Javascript包来帮助管理我的请求。

到目前为止,我已经通过以下方法成功地获得了令牌:

代码语言:javascript
复制
import * as patreon from 'patreon';
const patreonOAuthClient = patreon.oauth(clientId, clientSecret);
patreonOAuthClient.getTokens(oauthGrantCode, redirectURL).then((tokenResponse) => { 
     console.log(tokenResponse);
})

我收到的信物是这样的:

代码语言:javascript
复制
   // 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坏的请求:

代码语言:javascript
复制
patreonOAuthClient.refreshToken(tokenResponse).then(response => {
      console.log(response, 'success!');
}).catch(err => {
      console.log(err, ':(');
});

它没有显示在npm文档中,但是您可以在patreon的refreshToken()上找到它。

根据他们的api文档中的这里

如果您希望在令牌过期后获得最新信息,则可能会发出一个新令牌供下一个月使用。若要刷新令牌,请使用授予类型refresh_token向令牌端点发出POST请求,如示例所示。您还可以在客户端页面中的适当客户端手动刷新令牌。

所以我得到400的原因是因为我需要等待一个月才能刷新令牌,还是我只是不正确地实现API?我希望有更多OAuth经验的人能告诉我,我们应该在之前进行令牌刷新,还是在到期后执行更新?

(如果您在它到期前刷新它,那么在这个月到期之前,是否有特定的方法来让一个快速服务器来完成它呢?因为我认为为每个令牌添加一个超时对内存非常不利)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-19 07:51:08

我终于让SDK开始工作了。我从源代码中得到的印象是,令牌是从响应中接收的对象。但事实证明,令牌是字符串值。

所以:

代码语言:javascript
复制
// Using tokenResponse.refresh_token instead of just tokenResponse
patreonOAuthClient.refreshToken(tokenResponse.refresh_token).then(response => {
      console.log(response, 'success!');
}).catch(err => {
      console.log(err, ':(');
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50411029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档