[英]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.