SignInManager.ExternalLoginSignInAsync无法登录用户

Tom*_*han 3 asp.net oauth-2.0 asp.net-identity asp.net-core

在ASP.NET Core和OAuth中的ASP.NET身份的上下文中,我在登录回调中有以下代码段:

var info = await _signInManager.GetExternalLoginInfoAsync();
if (info == null)
{
    return RedirectToAction(nameof(Login));
}

var result = await _signInManager.ExternalLoginSignInAsync(
    info.LoginProvider,
    info.ProviderKey,
    isPersistent: true);

if (result.Succeeded)
{
    // ...
Run Code Online (Sandbox Code Playgroud)

由于某种原因,我无法确定,即使我确实正确登录外部提供程序,也result总是返回状态Failed(显然,因为刷新外部页面突然显示我已登录).

我有不同之处在于登录尝试失败的唯一信息是,它是不是任何的因IsLockedOut,RequiresTwoFactor或者IsNotAllowed,因为这些标志也false将上result对象.

如何获取有关出错的更多信息?


更新:

根据@Dmitry的建议,我已经启用了非常积极的日志记录,但我仍然找不到任何有价值的东西.我在成功获取info和后续失败登录尝试之间的日志中获得的唯一内容是来自我的db上下文:

2017-07-04T22:45:14.2847287 + 02:00 0HL633KNRMVO7 [INF]执行DbCommand(1ms)[Parameters = [@__ get_Item_0 ='?' (大小= 450),@__ get_Item_1 ='?' (Size = 450)],CommandType ='Text',CommandTimeout = '30'] SELECT TOP(1)[e].[LoginProvider],[e].[ProviderKey],[e].[ProviderDisplayName],[e ].[UserId] FROM [AspNetUserLogins] AS [e] WHERE([e].[LoginProvider] = @__ get_Item_0)AND([e].[ProviderKey] = @__ get_Item_1)(6438bdd5)

在MSSQL Management Studio中执行该操作我得到一个空的结果集,我怀疑这可能是一个问题,但我不知道为什么,或者如何解决它.任何帮助深表感谢.

car*_*ett 9

您缺少对UserManager.AddLoginAsync(https://msdn.microsoft.com/en-us/library/dn497534(v=vs.108).aspx)的调用,该调用将填充该AspNetUserLogins表.