1

我試圖從App Services獲取Google的刷新令牌,但是我無法。請求刷新令牌失敗。令牌存儲中未找到刷新令牌

登錄說

2016-11-04T00:04:25 PID [500]詳細接收的請求:GET https://noteappsvr.azurewebsites.net/.auth/login/google?access_type=offline 2016-11-04T00:04:25 PID [500]詳細下載的OpenID從配置https://accounts.google.com/.well-known/openid-configuration

2016-11-04T00:04:25 PID [500]詳細下載的OpenID發行者從https://www.googleapis.com/oauth2/v3/certs

2016-11-04T00鍵:04:25 PID [500]信息重定向:https://accounts.google.com/o/oauth2/v2/auth?response_type=code&client_id=299597639...04000925%26redir%3D&access_type=offline

2016-11-04T00:05:17 PID [500]詳細接收的請求:GET https://noteappsvr.azurewebsites.net/.auth/login/google/callback?state=nonce%3D5656e1dd...&prompt=none

2016-11-04T00:05:17 PID [500]詳細調用到外部HTTP端點POST https://www.googleapis.com/oauth2/v4/token

2016-11-04T00:05:18 PID [500]信息登錄已完成'[email protected]'。提供者:'google'。

2016-11-04T00:05:18 PID [500]爲站點'noteappsvr.azurewebsites.net'詳細寫入'AppServiceAuthSession'cookie。長度:728

2016-11-04T00:05:18 PID [500]信息重定向:https://noteappsvr.azurewebsites.net/.auth/login/done#token=%7B%22authenti...d6ffa9924e5%22%7D%7D

2016-11-04T00:05:50 PID [500]詳細接收的請求:GET https://noteappsvr.azurewebsites.net/.auth/refresh

2016-11-04T00:05:50 PID [500]詳細的JWT驗證成功。主題:'sid:4fd4f6 ...',發行人:'https://noteappsvr.azurewebsites.net/'。

2016-11-04T00:05:50 PID [500]警告sid:4fd4f6發出的刷新請求失敗,因爲令牌存儲中未找到刷新標記。

2016-11-04T00:05:50 PID [500]信息發送響應:403.80故宮

似乎有在令牌存儲裝置沒有刷新令牌,但爲什麼呢? 我已經在門戶上打開了令牌存儲設置。

回答

0

如果Google檢測到它已經爲用戶提供了刷新令牌,那麼除非您明確提示用戶同意,否則它不會提供額外的刷新令牌。您可以通過將提示=同意查詢字符串參數添加到登錄URL來執行此操作。在你的情況下,https://noteappsvr.azurewebsites.net/.auth/login/google?access_type=offline&prompt=consent

試試這個,看看是否恢復谷歌刷新令牌。

這種行爲可以在這裏找到(的HTTP/REST標籤下)

谷歌文檔:https://developers.google.com/identity/protocols/OAuth2WebServer#offline

重要:當您的應用程序接收刷新令牌,它來存儲刷新令牌是非常重要的未來的使用。如果您的應用程序丟失了刷新令牌,則必須在獲得另一個刷新令牌之前重新提示用戶徵求同意。如果您需要重新提示用戶同意,請在授權代碼請求中包含提示參數,並將該值設置爲同意。

在正常使用情況下,刷新標記不應丟失。如果你看到一個它迷失的情況,請告訴我。

+0

感謝您的回覆,我可以通過添加prompt = consent參數再次收到刷新令牌。 –

+0

感謝您的回覆,我可以通過添加提示=同意參數來再次收到刷新令牌。 但是不建議添加此參數? 在實際使用中,首先要求用戶用對話框登錄,然後多次使用刷新令牌。如果到期,則再次顯示登錄對話框。 在第一個添加該參數似乎沒有問題。 –

+0

我建議你像正常一樣進行正常的登錄和刷新流程。如果刷新失敗並且代碼檢測到沒有刷新標記,則可能可以調用prompt = consent來重新創建刷新標記。 –