Asp.net核心和身份服务器:外部登录不起作用

时间:2018-10-25 13:36:19

标签: asp.net identityserver4

我已经使用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中的要点,但看不到我错过的内容。

任何人都可以建议我尚未完成/配置的工作吗?

谢谢

0 个答案:

没有答案