我开发了一个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");
}
}