GetExternalLoginInfoAsync null与ExternalLoginCallback中的OWIN,除非已登录到谷歌

时间:2014-05-19 15:52:06

标签: c# asp.net asp.net-mvc login owin

我一直在尝试使用Google帐户在MVC5应用中使用OWIN实现外部登录。

如果我已经登录谷歌,点击我的应用程序中的谷歌按钮就可以了,在允许我访问logininfo后,它会转到我的注册页面。

如果我在点击我的应用程序谷歌按钮时尚未登录谷歌,我会收到提示按预期登录谷歌,但回叫接收器似乎没有看到我已经在此方案中,在logininfo中以logininfo身份始终为null,如下所示...

    [AllowAnonymous]
    public async Task<ActionResult> ExternalLoginCallback(string returnUrl)
    {
        var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();

         if (loginInfo == null)
        {
            return RedirectToAction("Login");
        }

        // Code omitted for brevity.
        }
    }

有没有人有解决方法或解释?它几乎就像外部cookie在登录谷歌之后无法提供给OWIN。

1 个答案:

答案 0 :(得分:7)

经过几天的调查,我终于遇到了答案。问题似乎是登录谷歌后,它重定向回网站,并没有登录谷歌的权限,因此被重定向回登录页面。如果已经登录谷歌,不知道为什么这会有效。我在找到文章后发现了这个...

http://blog.technovert.com/2014/01/google-openid-integration-issues-asp-net-identity/

我在配置文件中添加了以下内容。

<location path="signin-google">
 <system.web>
   <authorization>
     <allow users="*" />
   </authorization>
 </system.web>
</location>

现在有效......

相关问题