Asp.net core mvc GetExternalLoginInfoAsync返回null dotnet core 2.0
我正在尝试使用dot net core 2.0设置Facebook身份验证,但在我的ExternalLoginCallbackAsync方法中,我总是得到null作为响应,我遵循了文档,到目前为止,我就是这么做的: 在启动文件中的my ConfigureServices中: 在我的登录控制器中:Asp.net core mvc GetExternalLoginInfoAsync返回null dotnet core 2.0,asp.net-core-mvc,.net-core,facebook-oauth,asp.net-core-2.0,.net-core-2.0,Asp.net Core Mvc,.net Core,Facebook Oauth,Asp.net Core 2.0,.net Core 2.0,我正在尝试使用dot net core 2.0设置Facebook身份验证,但在我的ExternalLoginCallbackAsync方法中,我总是得到null作为响应,我遵循了文档,到目前为止,我就是这么做的: 在启动文件中的my ConfigureServices中: 在我的登录控制器中: public IActionResult ExternalLogin(string provider) { var authProperties = new A
public IActionResult ExternalLogin(string provider)
{
var authProperties = new AuthenticationProperties
{
RedirectUri = Url.Action("ExternalLoginCallbackAsync", "Login")
};
return Challenge(authProperties,provider);
}
在我的ExternalLoginCallbackAsync方法中
当我这样做的时候
var info = await _signInManager.GetExternalLoginInfoAsync();
有什么提示为什么我总是为空
谢谢我按照Lasse Vabe Rolstad的建议查看了SignInManager代码,对我来说,auth属性中缺少一个密钥,因此我必须手动添加它,如下所示:
var authProperties = new AuthenticationProperties
{
RedirectUri = Url.Action("ExternalLoginCallbackAsync", "Login"),
Items = { new KeyValuePair<string, string>("LoginProvider",provider) }
};
var authProperties=新的AuthenticationProperties
{
RedirectUri=Url.Action(“ExternalLoginCallbackAsync”,“Login”),
Items={newkeyvaluepair(“LoginProvider”,provider)}
};
在我的例子中,我必须启用SSL,一旦启用SSL,它将返回正确的信息。要启用SSL,请右键单击web服务器字符串中的项目-->属性-->调试-->检查(启用SSL)部分。我使用的是core 3.0您可以查看中的第555行,了解它返回null时的不同条件。对我来说,这是因为MS需要有他们的“NameIdentifier”声明,这与子声明基本相同。为了解决这个问题,我添加了一个ClaimAction来将sub映射到NameIdentifier。谢谢你指出了正确的方向,我找到了答案
var authProperties = new AuthenticationProperties
{
RedirectUri = Url.Action("ExternalLoginCallbackAsync", "Login"),
Items = { new KeyValuePair<string, string>("LoginProvider",provider) }
};