Facebook graph api ASP.NET WebApi身份Facebook登录访问被拒绝
我正在构建一个ASP.NET(4.6)WebApi项目,我正在使用ASP.NET身份向Facebook、Google和Microsoft验证我的API。我已经设法通过谷歌和微软的认证,但没有通过Facebook。 我正在使用Visual Studio 2015 问题是每次我进行身份验证时都会被拒绝访问。场景如下所示:Facebook graph api ASP.NET WebApi身份Facebook登录访问被拒绝,facebook-graph-api,asp.net-web-api,asp.net-identity,facebook-login,asp.net-identity-2,Facebook Graph Api,Asp.net Web Api,Asp.net Identity,Facebook Login,Asp.net Identity 2,我正在构建一个ASP.NET(4.6)WebApi项目,我正在使用ASP.NET身份向Facebook、Google和Microsoft验证我的API。我已经设法通过谷歌和微软的认证,但没有通过Facebook。 我正在使用Visual Studio 2015 问题是每次我进行身份验证时都会被拒绝访问。场景如下所示: 我通过浏览器调用localhost:2975/API/Account/ExternalLogins?returnUrl=%2F&generateState=true 对于我的API
public async Task<IHttpActionResult> GetExternalLogin(string provider, string error = null)
{
if (error != null)
{
// This is where the API comes in step 5 above
return Redirect(Url.Content("~/") + "#error=" + Uri.EscapeDataString(error));
}
if (!User.Identity.IsAuthenticated)
{
// This is where the API comes in step 2 above before it redirects me to Facebook login
return new ChallengeResult(provider, this);
}
ExternalLoginData externalLogin = ExternalLoginData.FromIdentity(User.Identity as ClaimsIdentity);
// Untouched logic
// ....
}
感觉我什么都试过了。有没有办法解决这个问题
提前谢谢 来自队列中的post
context.Identity.AddClaim(new Claim("urn:facebook:email", context.Email, ClaimValueTypes.Email, "Facebook"));
context.Email为空。尝试更新nuget软件包,Microsoft.Owin.Security、Microsoft.Owin.Security.Facebook等更新nuget软件包解决了我的问题。对于那些无法通过更新
nuget
软件包来解决问题的人,这可能会有所帮助
我们的Web应用程序
在外部登录时工作正常,之前我们的应用程序将用户重定向到Facebook
或Google
进行身份验证,并从他们的帐户返回相关详细信息。但是出现了这个问题,重定向url包含一个值为Access\u Denied
的错误。这根本不是描述性的,因此您需要手动查找错误
经过大量调试和更新后,我仍然无法解决这个问题,后来发现解决方案是服务器的IPwhitelisting
,因为我们的it团队和少数开发人员更改了服务器设置或将网站迁移到新服务器,而新服务器显然具有不同的IP
。因此,我将Facebook开发控制台中的IP地址添加到了白名单
地址中,效果非常好
然而,谷歌认证是固定的,没有任何白名单,只是更新了
nuget
包就完成了任务。更新晚:我的代码没有问题。在我更改了Facebook应用程序中的一些设置后,它起作用了。你能告诉我们你在Facebook网站上对它起作用的地方做了哪些更改吗?我对这些设置也很好奇……这是为我做的!默认模板包括v3.0.1。我将该软件包更新为v3.1.0,它运行正常。
context.Identity.AddClaim(new Claim("urn:facebook:email", context.Email, ClaimValueTypes.Email, "Facebook"));