2012-10-19 58 views
3

我可以對access_token進行身份驗證並獲取相應的refresh_token,並且罰款(隨後的API交互也很好)。無法在到期後刷新令牌

但是,我似乎只能夠刷新令牌(POST/oauth/tokengrant_type=refresh_token)的access_token已經到期之前。到期後,相同的刷新代碼(與文檔中提供的代碼完全相同)將返回錯誤invalid_grant

我使用soundcloud-ruby SDK FWIW,但我可以通過捲曲來重現它。另外,我發現Google Group的一些舊消息提到我可以申請一個不到期的令牌,但是我沒有看到在文檔中的任何地方提到過這個消息。這仍然是一個可行的選擇嗎?

回答

1

這是正確的。刷新令牌在訪問令牌到期後不能使用。

在構建授權URL時,您可以通過指定scope=non-expiring來請求未到期的訪問令牌。爲了與Ruby的SDK做到這一點,只需通過附加PARAMS到authorize_url方法:

require 'soundcloud' 

client = Soundcloud.new(
    :client_id => 'YOUR_CLIENT_ID', 
    :client_secret => 'YOUR_CLIENT_SECRET', 
    :redirect_uri => 'REDIRECT_URI' 
) 

client.authorize_url(:scope => 'non-expiring') 

流的其餘部分應該是完全一樣的(抓住從查詢字符串中的「代碼」參數,並作出POST請求/oauth2/token)。

+6

如果刷新令牌在過期後無法用於請求訪問令牌,那麼SDK中的目的是什麼?根據我在Oauth RFC中收集的內容,刷新令牌表達的意圖是允許訪問令牌再次獲得,而無需用戶重新授權。 – iplaybongos

+2

這是不正確的:與谷歌Oauth2你可以刷新令牌如果過期 –

+0

此非到期令牌不需要刷新有史以來? – 2015-08-29 14:57:17