2017-01-19 70 views
1

我目前工作波迪奧整合和我都在不給出明確的答案是否refresh_token自身過期的,什麼是在這種情況下獲得新的刷新令牌的確切流的物品絆倒。波迪奧的Oauth - 刷新令牌壽命

的文章:

Podio Refresh token Expiry - 它不會過期(從別人的答案誰的用戶名,相當最近有波迪奧)

https://help.podio.com/hc/en-us/community/posts/206669587-Get-new-refresh-token - 到期,你得到它的響應,但不是的一部分RLY?這裏是一個沒有結論

一些討論,我問這個,因爲我有很多的服務和OAuth實現的工作,但它的第一次刷新令牌實際上是越來越無效。所以如果28天過去了,用戶必須重新認證?或者只是一個令牌失效,但「授予」仍然存在?我不得不說這是很令人困惑的,因爲我習慣於使用grant == refresh token,但我理解它的OAuth規範。 此外,我們只是想在數據庫中存儲刷新令牌。 我很想測試它,但我不想等待28天。

的文檔不明確說明什麼是刷新令牌的使用壽命。

我很樂意波迪奧有人給這個明確的答案。刷新令牌是否到期,是否只有在完全不活動(無api調用)或者只是固定數量時,以及在什麼情況下(不活動或時間過去),獲取刷新令牌的確切流程是什麼?是否需要用戶重新認證?

回答

5

這裏有兩個部分玩,訪問令牌刷新令牌

訪問令牌在通過expires_in屬性指定的時間間隔後過期。

刷新令牌可以到期,如果不使用的時間超過28天。每次使用刷新令牌請求新的訪問令牌時,定時器都會重置,並且在刷新令牌到期前還有28天。 如果您在28天內定期獲得新的訪問令牌,您可以假設無限期地使用同一個刷新令牌。

實施例的HTTP請求以獲得初始接入令牌和刷新令牌(用星號刪節的值):

POST /oauth/token HTTP/1.1 
Host: podio.com 
Content-Type: application/x-www-form-urlencoded 
Cache-Control: no-cache 

grant_type=password&username=******&password=******&client_id=******&client_secret=****** 

響應體:

{ 
    "access_token": "******9c2", 
    "expires_in": 28800, 
    "token_type": "bearer", 
    "scope": "global:all", 
    "ref": { 
    "type": "user", 
    "id": ****** 
    }, 
    "refresh_token": "******04a" 
} 

實施例請求以獲取新的接入令牌(使用相同的刷新令牌):

註釋:請求正文中多餘的空白字符可能會導致問題。這是我在試驗時碰到的一個問題。

請求:

POST /oauth/token HTTP/1.1 
Host: api.podio.com 
Content-Type: application/x-www-form-urlencoded 
Cache-Control: no-cache 

grant_type=refresh_token&client_id=******&client_secret=******&refresh_token=******04a 

響應體:

{ 
    "access_token": "******676", 
    "expires_in": 28800, 
    "token_type": "bearer", 
    "scope": "global:all", 
    "ref": { 
    "type": "user", 
    "id": ****** 
    }, 
    "refresh_token": "******04a" 
} 

需要注意的是刷新標記的值不會改變,可反覆使用,以獲得新的訪問令牌是非常重要的。


TL; DR - 如果你不使用它在28天后到期刷新令牌。每當您使用刷新令牌獲取新的訪問令牌時,刷新令牌的到期計時器將重置。

+1

偉大的答案,我建議包括28天info +延長壽命後,在您的文檔中使用每個:) – Raidmaster