我正在使用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的refreshToken()上找到它。
根据他们的api文档中的这里:
如果您希望在令牌过期后获得最新信息,则可能会发出一个新令牌供下一个月使用。若要刷新令牌,请使用授予类型refresh_token向令牌端点发出POST请求,如示例所示。您还可以在客户端页面中的适当客户端手动刷新令牌。
所以我得到400的原因是因为我需要等待一个月才能刷新令牌,还是我只是不正确地实现API?我希望有更多OAuth经验的人能告诉我,我们应该在之前进行令牌刷新,还是在到期后执行更新?
(如果您在它到期前刷新它,那么在这个月到期之前,是否有特定的方法来让一个快速服务器来完成它呢?因为我认为为每个令牌添加一个超时对内存非常不利)。
发布于 2018-05-19 07:51:08
我终于让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, ':(');
});https://stackoverflow.com/questions/50411029
复制相似问题