【发布时间】:2018-05-18 12:07:44
【问题描述】:
我正在尝试使用 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 Bad Request:
patreonOAuthClient.refreshToken(tokenResponse).then(response => {
console.log(response, 'success!');
}).catch(err => {
console.log(err, ':(');
});
npm 文档中没有显示,但您可以在 patreon 的 github source code 上找到 refreshToken()。
根据here在他们的api文档中:
如果您希望在令牌过期后获得最新信息, 可能会发行一个新的令牌以供下个月使用。到 刷新令牌,向令牌端点发出 POST 请求 授予类型的 refresh_token,如示例中所示。您也可以手动 在您的客户端页面中刷新相应客户端上的令牌。
我得到 400 的原因是因为我需要等待一个月来刷新令牌,还是我只是错误地实现了 API?我希望有更多 OAuth 经验的人能告诉我我们是否应该在令牌过期 之前 或 之后 进行令牌刷新?
(如果您在到期前刷新它,是否有某种方法可以让快速服务器在月份到期之前进行计时?因为我认为为每个令牌添加超时对内存来说真的很糟糕)。
【问题讨论】:
标签: rest typescript express oauth-2.0 patreon