AuthenticationManager.GetExternalLoginInfoAsync()在Facebook上返回null

时间:2017-03-28 10:06:33

标签: c# facebook model-view-controller facebook-login

我开发了一个mvc 5应用程序,我使用外部回调使用facebook登录它运行良好,但现在它不工作,我无法找到实际问题。我找出了为什么AuthenticationManager.GetExternalLoginInfoAsync();返回null值我在我的应用程序中使用了所有解决方案,但仍然有这个问题。 我删除会话并设置cookie但不受影响。

我从nuget安装Facebook 6.4.0以使用FacebookClient从Facebook获取用户创建的事件仍在工作,但我不知道发生了什么,知道它不起作用并返回null。

在Startup.Auth

app.UseCookieAuthentication(new CookieAuthenticationOptions
        {
            AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
            LoginPath = new PathString("/Account/Login"),
            Provider = new CookieAuthenticationProvider
            {
                // Enables the application to validate the security stamp when the user logs in.
                // This is a security feature which is used when you change a password or add an external login to your account.  
                OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
                    validateInterval: TimeSpan.FromDays(1),
                    regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
            },
            ExpireTimeSpan = TimeSpan.FromDays(2)
        });
        app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);

在Startup.Auth中设置Facebook app id和app secret

app.UseFacebookAuthentication(
    appId: "my app id",
    appSecret: "my app secret"
 );

在登录时,我使用以下代码。

[AllowAnonymous]
public async Task<ActionResult> ExternalLoginCallback(string returnUrl)
{            
    var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();
    if (loginInfo == null)
    {
        return RedirectToAction("Login");
    }
}

0 个答案:

没有答案