我有ASP.NET 5项目,我正在使用网络应用程序接口来建立外部登录(脸书和谷歌)。在我的例子中,我有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;
我阅读了堆栈上关于这个bug的所有问题,但没有任何问题对我有帮助,大多数问题都是针对MVC控制器的,所以没有帮助。
例如,this question并没有帮助我,因为它是针对MVC的。
我使用的是Owin 4.0的更新
发布于 2021-02-28 11:52:18
感谢所有在评论中让我写下我的答案的人。
其实这个问题还没有解决,我也没有找到解决这个问题的办法,
我很抱歉这么说。
我发现我不需要从一开始就调用这个方法。
我走了一条完全不同的路(我不记得是怎么走的,为什么走的)
只有一个小建议:再次考虑这种情况,并重新考虑是否真的需要调用此方法。
我真希望我能帮上忙,我很抱歉。
发布于 2018-06-08 04:59:54
你得到了"NULL“,因为你没有写代码,如果IsAuthenticated = true,那么它应该做什么?(表示重定向到任何页面或其他页面)。
仔细查看IsAuthenticated: if (!User.Identity.IsAuthenticated)的if条件
这可能会对你有所帮助。
发布于 2020-01-10 22:26:13
尝试在Google控制台中启用Google + API。还要确保在将密钥粘贴到代码后,密钥不会与末尾的空格连接。
https://stackoverflow.com/questions/50604415
复制相似问题