facebook - 有没有人真正让 ASP.NET MVC 5 Identity Facebook 登录开箱即用? (loginInfo 始终返回 null)

标签 facebook oauth asp.net-mvc-5 owin

使用 Visual Studio 2013 Update 5,我创建了一个样板 MVC 5 应用程序并选择了个人用户帐户身份验证选项,我一直在尝试使用模板代码实现社交登录,但没有成功。

我已确保所有 NuGet 包都是最新的,并且代码使用的是 MVC 5.2.3;欧文3.0.1; AspNet.Identity 2.0.0.

我可以让一切正常工作,包括使用 OtpSharp 的身份验证器应用程序,但无论我尝试什么,Facebook 登录都无法正常工作。

我已经创建了 Facebook 应用程序,设置了所有相关选项,并在我的 Startup.Auth.cs 文件中设置了 AppId 和 AppSecret。

当我尝试使用 Facebook 登录时,MVC 站点将我重定向到 Facebook,这会提示我使用该应用程序的授权屏幕。我单击确定并接受它,然后我被重定向回 MVC 应用程序。如果我检查我的 Facebook 帐户下的授权应用程序,我的应用程序会列出并显示它已授予该应用程序检索电子邮件地址的权限。

回调工作正常,但当它命中 ExternalLoginCallback 时,尤其是:

var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync()

loginInfo 始终返回 null。

查看请求,它显示了 access_denied 错误:

https://localhost:44301/Account/ExternalLoginCallback?ReturnUrl=%2Fmanage&error=access_denied

我已经阅读了几乎所有关于此错误的博客文章和 SO 问题,虽然其中大部分都有帮助,但大多数也已过时且不相关。

似乎模板化项目中缺少某些东西,或者其他地方发生了某些变化,因为无论我阅读哪个教程和设置选项,结果都是一样的。

我已经在运行 IIS Express 的开发机器内部和外部运行 IIS 7.5 的托管机器上尝试过这个,结果是一样的。

我什至反编译了 Microsoft.Owin.Security.Facebook 库以查看查询字符串的特定部分在哪里设置为无帮助。

如果我有头发,我现在早就把它拔光了。

我会采纳任何建议。谁能帮忙?

最佳答案

Facebook 喜欢刁难。 Access_denied 听起来像是他们故意阻止你。检查您的开发人员仪表板和授权在开发模式下测试您的应用程序的帐户。默认情况下会批准电子邮件权限,因此这不是您的问题。

确保您正在测试的帐户已添加到此处:

facebook dashboard roles example

如果这不能解决问题,请确保您在此处的域部分中列出了正确的应用程序域(测试和上线):

without the domain here, it will think someone else is trying to jack your app

关于facebook - 有没有人真正让 ASP.NET MVC 5 Identity Facebook 登录开箱即用? (loginInfo 始终返回 null),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35508879/

相关文章:

amazon-web-services - AWS Cognito TOKEN 端点无法将授权代码转换为 token

visual-studio-2013 - Web Essentials 2013未使用的CSS无法正常工作

android - 发布到 facebook 组

api - 如何安全地从我的 Web 应用程序访问我自己的 API?

地址栏中的Javascript,我该如何破译?

ios - instagram 中的精确重定向 uri 是什么?我如何在 ios 应用程序中使用它? instagram 开发者门户上的 "Enter a valid url"

c# - 从 AuthorizeAttribute 继承的属性不起作用

asp.net - 如何自定义 Asp.net Identity 2 用户名已获取验证消息?

javascript - Facebook 按钮不适用于 Iron-Router

android - 将android Facebook SDK添加到项目后的java.lang.NoClassDefFoundError和ClassNotFoundException