ASP.NET 5 Google 个 OAuth 登录名即将到期

ASP.NET 5 Google OAuth logins expiring

我已按照 MVC 5 App with Facebook, Twitter, LinkedIn and Google OAuth2 Sign-on 上的步骤创建 Google OAuth 外部登录。

但是,我的用户登录有时会失效。他们必须使用密码登录到他们的帐户并删除,然后重新添加他们的外部登录才能再次使用。但是过一段时间又会失效

本教程是否有未涵盖的内容?为什么我的 Google 登录会过期?

编辑:我没有使用刷新令牌。我现在要求 "offline" 访问权限。我只需要在登录时进行沟通。

似乎以下代码在一段时间后为 Google 返回 NULL。

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

原来这个问题与 OAuth 中间件和自定义会话状态提供程序有关。事实证明,如果没有会话 cookie,您将无法获得有效的 GetExternalLoginInfoAsync 结果。天知道它们之间有什么关系,但有一个简单的 hack 可以解决它。

OAuth 2 Owin not working StackExchange.Redis SessionState