![](/img/trans.png)
[英]ASP.NET Facebook Login GetExternalLoginInfoAsync Always Return Null
[英]ASP.NET Web API Authentication.GetExternalLoginInfoAsync always return null
我有 ASP.NET 5 项目,我正在使用 Web API 来建立外部登录(用于 Facebook 和 Google)。 就我而言,我有包含以下代码的 Web API 控制器(不是 MVC 控制器):
[OverrideAuthentication]
[HostAuthentication(DefaultAuthenticationTypes.ExternalCookie)]
[AllowAnonymous]
[Route("ExternalLogin", Name = "ExternalLogin")]
public async Task<IHttpActionResult> GetExternalLogin(string provider, string error = null)
{
if (error != null)
return Redirect(Url.Content("~/") + "#error=" + Uri.EscapeDataString(error));
if (!User.Identity.IsAuthenticated)
return new ChallengeResult(provider, this);
var exLog = await Authentication.GetExternalLoginInfoAsync();
当移动应用程序调用此方法时,我正确验证了请求并且属性User.Identity.IsAuthenticated
为真,我可以在调试器中看到用户是正确的,但问题是exlog
变量总是出现空值。
这是Authentication
属性
private IAuthenticationManager Authentication => this.Request.GetOwinContext().Authentication;
我阅读了堆栈上有关此错误的每个问题,但没有任何帮助,大多数问题都是针对 MVC 控制器的,因此没有帮助。
例如,这个问题对我没有帮助,因为它是针对 MVC 的。
更新我正在使用 Owin 4.0
对于所有在评论中要求我回答的人。
其实这个问题还没有解决,我也没有找到解决办法,
我很抱歉这么说。
我发现我不需要从一开始就调用这个方法。
我走了完全不同的路(我不记得如何以及为什么)
只是一个小建议:再次考虑这种情况,并重新考虑是否真的需要调用这个方法。
我希望我能提供更多帮助,我很抱歉。
如果 IsAuthenticated = true,您将收到“NULL”,因为您没有编写代码,那么它应该怎么做? (意味着重定向到任何页面或其他)。
仔细查看 IsAuthenticated 的 if 条件: if ( !User.Identity.IsAuthenticated )
也许这可以帮助你。
尝试在 Google 控制台中启用 Google + API。 还要确保在将密钥粘贴到代码后,密钥没有在末尾连接一个空格。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.