簡體   English   中英

如何刷新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文檔中,但是您可以在patreongithub源代碼上找到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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM