问题描述: 在使用AspNet Core Identity的GetExternalLoginInfoAsync方法时,始终返回null值。
解决方法:
services.AddIdentity()
.AddEntityFrameworkStores()
.AddDefaultTokenProviders();
services.AddAuthentication()
.AddGoogle(options =>
{
options.ClientId = "YOUR_GOOGLE_CLIENT_ID";
options.ClientSecret = "YOUR_GOOGLE_CLIENT_SECRET";
})
.AddFacebook(options =>
{
options.AppId = "YOUR_FACEBOOK_APP_ID";
options.AppSecret = "YOUR_FACEBOOK_APP_SECRET";
});
public async Task ExternalLoginCallback(string returnUrl = null, string remoteError = null)
{
if (remoteError != null)
{
// 处理错误
return RedirectToAction("Login");
}
var info = await _signInManager.GetExternalLoginInfoAsync();
if (info == null)
{
// 处理错误
return RedirectToAction("Login");
}
// 处理登录逻辑
// ...
}
@Html.ActionLink("使用Google登录", "ExternalLogin", new { provider = "Google" })
@Html.ActionLink("使用Facebook登录", "ExternalLogin", new { provider = "Facebook" })
通过以上步骤,可以解决AspNet Core Identity的GetExternalLoginInfoAsync始终返回null的问题。请根据实际情况替换YOUR_GOOGLE_CLIENT_ID、YOUR_GOOGLE_CLIENT_SECRET、YOUR_FACEBOOK_APP_ID和YOUR_FACEBOOK_APP_SECRET为正确的值。
上一篇:Aspnet Core Identity 登录和注册在 Google Chrome 上不起作用。
下一篇:ASPNET CORE InvalidOperationException: 无法重定向到授权端点,可能缺少或无效的配置。