如何刷新 OAuth2 令牌?我需要等待令牌过期吗? (Patreon API)
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 source code 上找到 refreshToken()。
根据 here 在他们的 api 文档中:
If you wish to get up-to-date information after the token has expired,
a new token may be issued to be used for the following month. To
refresh a token, make a POST request to the token endpoint with a
grant type of refresh_token, as in the example. You may also manually
refresh the token on the appropriate client in your clients page.
我得到 400 的原因是因为我需要等待一个月才能刷新令牌,还是我只是错误地实施了 API?我希望有更多 OAuth 经验的人可以告诉我我们是否应该在令牌过期 之前 或 之后 进行令牌刷新?
(如果你在它过期之前刷新它,有没有某种方法可以让快速服务器在一个月过期之前完成它?因为我认为它为每个令牌添加超时对内存来说真的很糟糕)。
我终于让 SDK 工作了。源代码给我的印象是令牌是从响应中接收到的对象。但是后来发现token是字符串值。
所以:
// Using tokenResponse.refresh_token instead of just tokenResponse
patreonOAuthClient.refreshToken(tokenResponse.refresh_token).then(response => {
console.log(response, 'success!');
}).catch(err => {
console.log(err, ':(');
});
我正在使用 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 source code 上找到 refreshToken()。
根据 here 在他们的 api 文档中:
If you wish to get up-to-date information after the token has expired, a new token may be issued to be used for the following month. To refresh a token, make a POST request to the token endpoint with a grant type of refresh_token, as in the example. You may also manually refresh the token on the appropriate client in your clients page.
我得到 400 的原因是因为我需要等待一个月才能刷新令牌,还是我只是错误地实施了 API?我希望有更多 OAuth 经验的人可以告诉我我们是否应该在令牌过期 之前 或 之后 进行令牌刷新?
(如果你在它过期之前刷新它,有没有某种方法可以让快速服务器在一个月过期之前完成它?因为我认为它为每个令牌添加超时对内存来说真的很糟糕)。
我终于让 SDK 工作了。源代码给我的印象是令牌是从响应中接收到的对象。但是后来发现token是字符串值。
所以:
// Using tokenResponse.refresh_token instead of just tokenResponse
patreonOAuthClient.refreshToken(tokenResponse.refresh_token).then(response => {
console.log(response, 'success!');
}).catch(err => {
console.log(err, ':(');
});