2012-08-05 19 views
1

我正在開發Google Chrome擴展程序,並使用Boris Smus Oauth 2.0庫。OAuth 2.0響應中沒有refresh_token

驗證交換完成,但是,我遇到的問題是,即使我在授權期間指定access_type = offline,在交換過程中,我從來沒有收到refresh_token,只是access_token,expires_in和token_type。

我的預感是,這是因爲在我的API訪問設置中,OAuth2設置爲Web應用程序,並且Web應用程序未授予脫機訪問權限。有沒有人知道這是正確的還是已經能夠得到它的工作?

在此先感謝。

+0

這是非常奇怪的是refresh_token不脫機訪問給定的,當我認爲這是一個refresh_token的整個點。如果您有任何更新,請分享! – 2014-05-29 19:05:59

回答

1

我設法通過在授權url中添加可選的approval_prompt = force參數來解決問題。默認情況下,approval_prompt設置爲'auto'。當它被設置爲'強制'時,刷新令牌在令牌交換期間出現。

+0

在我的情況下,它根本沒有設置爲脫機。當我使用移動應用程序客戶端ID時,它假定爲脫機,然後當我切換到使用Web客戶端ID時,它停止工作(不會脫機)。 – n0rm1e 2013-09-29 14:28:47

0

根據OAuth 2.0 specification,refresh_token是可選的,並且在隱式授予和客戶端憑證授予中不受支持。

既然你提到access_type = offline,我猜你正在使用Facebook API。 Boris Smus document章節VARYING OAUTH IMPLEMENTATIONS也表示Facebook不會返回刷新令牌。

另請參閱this question

1

對於谷歌的OAuth客戶端,你必須參數提示=同意每次拿到refresh_token,

隨着谷歌,沒有爲隨後的登錄提供refresh_token。它只提供refresh_token當用戶第一次允許訪問

欲瞭解更多信息結帳這個https://stackoverflow.com/a/10857806/5752311