MVC5使用Facebook登录出现空引用问题。

7 浏览
0 Comments

MVC5使用Facebook登录出现空引用问题。

我使用ASP.NET mvc5的默认账号控制器以facebook登录时,有时会出现null引用异常。


这是有问题的方法:

public async Task ExternalLoginCallback(string returnUrl)
{
        // Crashes on this line
        var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();
        if (loginInfo == null)
        {
            return RedirectToAction("Login");
        }
}


我不知道如何调试。在代码中设置断点然后逐步执行对我没有帮助……最终只能看我的Error.cshtml页面。这时候的错误是一个简单的空对象引用异常,内部异常也是null。


编辑

我通过Nuget更新了最新的Owins,但没有变化。

编辑2

通过Fiddler查看,Facebook以正确的json格式返回200。

编辑3

很奇怪。我正在测试三个Facebook账户。其中两个账户正常,一个账户失败。而那个失败的账户返回200。我已在Facebook中删除了应用程序的引用……我会看到一个应用程序确认窗口,我点击确定,然后就失败了……非常奇怪。

admin 更改状态以发布 2023年5月21日
0
0 Comments

将我的Owin组件从版本3.0.1升级到版本3.1.0可以解决这个问题(目前为止)。3.1.0是在2017年4月10日发布的。

0
0 Comments

暂时的快速解决方案。

在ExternalLoginCallback之前必须清除Session。如下所示:

[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult ExternalLogin(string provider, string returnUrl)
{
    ControllerContext.HttpContext.Session.RemoveAll();
    // Request a redirect to the external login provider
    return new ChallengeResult(provider, Url.Action("ExternalLoginCallback", "Account", new { ReturnUrl = returnUrl }));
}

0