2015-10-13 81 views
0

我已按照MVC 5 App with Facebook, Twitter, LinkedIn and Google OAuth2 Sign-on上的步驟創建Google OAuth外部登錄。ASP.NET 5 Google OAuth登錄過期

但是,週期性地,我的用戶登錄不起作用。他們必須使用密碼登錄他們的帳戶並刪除,然後重新添加其外部登錄信息才能再次使用。但是,在一段時間後它會再次失敗。

本教程不包含的內容嗎?爲什麼我的Google登錄過期了?

編輯:我沒有使用刷新令牌。我現在要求「離線」訪問。我需要的只是登錄時的通信。

似乎下面的代碼在一段時間後對Google返回NULL。

var loginInfo = await _authenticationManager.GetExternalLoginInfoAsync(); 
if (loginInfo == null) 
{ 
    return RedirectToAction("Login"); 
} 
+0

[在MVC應用程序谷歌OAuth訪問令牌過期?(可能的重複http://stackoverflow.com/questions/27678496/google-oauth-access-token-expiration-in-mvc-app ) –

+0

@StaffordWilliams,我不需要刷新令牌。我需要的只是在登錄時訪問他們的帳戶。您鏈接的問題是關於離線訪問的增量認證。 –

回答

0

這個問題竟然是與OAuth的中間件和自定義會話狀態提供者。事實證明,如果沒有會話cookie存在,您將無法獲得有效的GetExternalLoginInfoAsync結果。上帝知道他們是如何相關的,但有一個簡單的黑客來解決它。

OAuth 2 Owin not working StackExchange.Redis SessionState