我已经使用asp.net身份设置了一个asp.net核心(2.1)应用程序,并将Identity Server 4插入为auth中间件。这对于本地帐户来说效果很好,但是现在我正尝试从Google开始启用第三方登录提供商。 因此,我将以下内容添加到我的ConfigureServices方法中:
services.AddAuthentication()
.AddGoogle("Google", options =>
{
options.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;
options.ClientId = "numbershere.apps.googleusercontent.com";
options.ClientSecret = "my-secret";
});
并将UI支架添加到项目中,然后出现我的Google登录按钮。如果单击它,我将重定向到Google,登录并显示确认屏幕,然后返回到我的应用程序。
此时,我的OnGetCallbackAsync
中的ExternalLoginModel
被打了,其中包含一个电话:
var info = await _signInManager.GetExternalLoginInfoAsync();
但是,此调用后info始终为null,因此用户仅被重定向回登录页面:
public async Task<IActionResult> OnGetCallbackAsync(string returnUrl = null, string remoteError = null)
{
returnUrl = returnUrl ?? Url.Content("~/");
if (remoteError != null)
{
ErrorMessage = $"Error from external provider: {remoteError}";
return RedirectToPage("./Login", new {ReturnUrl = returnUrl });
}
var info = await _signInManager.GetExternalLoginInfoAsync();
if (info == null)
{
ErrorMessage = "Error loading external login information.";
return RedirectToPage("./Login", new { ReturnUrl = returnUrl });
}
}
我已经在线阅读了有关内容,甚至遵循了Identity Server quick start中的要点,但看不到我错过的内容。
任何人都可以建议我尚未完成/配置的工作吗?
谢谢