Facebook登录信息:"URL已阻止:此重定向失败,因为重定向URI未在应用程序的客户端OAuth设置中列入白名单。"

153

重要通知:

如果您注册测试,请前往您的个人资料设置,然后在您的兴趣中添加删除个人资料

尝试使用Facebook登录网站时:

我收到以下错误信息:

URL被阻止:此重定向失败,因为重定向URI未在应用程序的客户端OAuth设置中列入白名单。请确保客户端和Web OAuth登录已开启,并将所有应用程序域添加为有效的OAuth重定向URI。

我的Facebook 设置(基础)如下:

在高级选项卡中,有效的OAuth重定向URI已设置为:

http://openstrategynetwork.com/_oauth/facebook?close

应用程序是公共的

更多设置(高级)在这里: 输入图像描述

应用程序密钥和密钥正确。我正在使用Meteor及其帐户包。


你的 ROOT_URL 是什么? - aedm
你使用哪个URL来重定向到Facebook登录页面?你仍然需要在授权请求中指定redirect_uri。 - Edward Jiang
@aedm:ROOT_URL被设置为http://openstrategynetwork.com - Amir Rahbaran
@EdwardJiang:我该在哪里做这个?这很奇怪,因为它曾经可以在本地工作。但是现在甚至本地主机也无法工作了。 - Amir Rahbaran
我也遇到了这个问题,redirect_uri与客户端OAuth设置中的配置完全匹配-更多信息请参见https://developers.facebook.com/support/bugs/232085950706415/ 需要帮助..提前感谢。 - josevoid
我有一个Web应用程序,它生成可变的重定向URI以传递一些参数,我猜我完了?那么白名单一个域以允许其下的所有类型的URI呢? - DrLightman
18个回答

127

正如提问者所写

在高级选项卡中,有效的OAuth重定向URI设置为:...

我曾经遇到过同样的问题(将重定向URL写入了错误的输入字段),我想强调的是

这并不是

Settings -> Advanced -> Share Redirect Whitelist

但是

Facebook Login -> Settings -> Valid OAuth redirect URIs

如果早些时候知道这个,就可以省下两小时的尝试和错误。

请记住,www.example.comexample.com不是相同的网址,将这两种格式都添加到重定向URL中。


17
投反对票的人:请添加评论说明您的担忧,否则答案不会得到改善。 - andymel
8
耶稣,我花了很多时间在错误的地方寻找,谢谢。 - ricks
1
很幸运在浪费两个小时之前看到了你的答案!我可能会后悔不已。谢谢! - eBoody
1
为什么我不能给某个答案投1000个赞? - Bennyboy1973
1
@DCoderT,您可以自由选择重定向URL。当OAuth过程(登录)完成时,用户将被重定向到该URL。 - andymel
显示剩余4条评论

95
你网站上的Facebook登录按钮指向的链接是: https://www.facebook.com/v2.2/dialog/oauth?client_id=1500708243571026&redirect_uri=http://openstrategynetwork.com/_oauth/facebook&display=popup&scope=email&state=eyJsb2dpblN0eWxlIjoicG9wdXAiLCJjcmVkZW50aWFsVG9rZW4iOiIwSXhEU05XamJjU0VaQWdqcmF6SXdOUWRuRFozXzc0X19lbVhGWUJTZGNYIiwiaXNDb3Jkb3ZhIjpmYWxzZX0= 注意:redirect_uri=http://openstrategynetwork.com/_oauth/facebook 如果你改变链接为:redirect_uri=http://openstrategynetwork.com/_oauth/facebook?close 它应该可以正常工作。或者,你也可以将Facebook链接更改为 http://openstrategynetwork.com/_oauth/facebook 你还可以在有效的重定向URI中添加 http://localhost/_oauth/facebook
Facebook要求你将重定向URI列入白名单,否则人们可能会使用Facebook登录你的服务,然后将他们的访问令牌发送到攻击者的服务器!你不希望发生这种情况 ;]

4
OAuth重定向URI是什么?我期望它应该和根Web应用的URL相同。 - AlvinfromDiaspar
2
这似乎有效。虽然我不确定最初是否是因为我尝试使用创建应用程序的帐户登录。实施了这个解决方案,并使用了另一个帐户,它(表面上)起作用了。oAuth重定向URI的语言和信息需要清晰明了。该信息相当深奥,几乎是神秘的。使用的术语甚至没有定义或澄清。 - abtecas
非常感谢,解决了我的问题!即使我已经搞定了SSL。 - Sweet Chilly Philly
诀窍在于查看重定向URL并将其添加到“Valid OAuth Redirect URIs”中,在我的情况下是signin-facebook。 - Usama Saleem
请确保将带有和不带有www的URL添加到您的有效授权重定向URI中。 - Bhavin Rana
1
我的重定向URL是https://${base_url}/#/fb-confirm。 为什么这个哈希在这里会引起问题? - Abhishek Matta

30

对于我的MVC应用程序,我必须将“/signin-facebook”添加到站点URL中...感谢这个绝妙的提示! - davaus
1
你救了我的好几周 @Umar Asghar - tree em
花了太长时间在这上面。谢谢!!!!!! - JoelE

12

在我的情况下,我只需要确保我的URL既有www,也有没有www的版本,分别用于应用程序域重定向URLs

输入图像说明

在我的情况下,我需要在我的网站URL后面加上signin-facebook作为重定向URL。


应用程序域真的需要吗?当我在本地测试时,没有设置应用程序域也可以工作。 - Darius.V
你使用oAuth和重定向吗? - Hooman Bahreini
是的。我使用Symfony Bundle https://github.com/knpuniversity/oauth2-client-bundle。 - Darius.V

12
请确保 "应用程序域" 和 Facebook 登录 => 有效的 OAuth 重定向 URI 已经设置正确。您必须检查www不使用www。最好在php、html、css文件和Fb应用程序设置中,统一使用带有 www 或不带 www 的 URL。
另外,如果您在 URL 的结尾处使用了 "/", 您必须将该 URL 添加到有效的 OAuth 重定向 URI的应用程序设置中。 例如:https://www.example.com/index.php/ 。如果您在重定向 URL 中使用此 URL,则必须将其设置为应用程序设置。
希望这会有所帮助。

在应用程序域中,您可以同时添加带有和不带有www的网址。 - qwertzman
朋友,你这篇帖子是什么意思啊?我有点困惑。 - TheBAST

8

首先,这是一个非常清晰的错误消息。很多开发人员,包括我自己,都会忽略它。请看这里的屏幕截图。

enter image description here

在“产品”>“Facebook登录”>“设置”下

或者只需转到此处的URL(将YOUR_APP_ID替换为您的应用程序ID):

https://developers.facebook.com/apps/YOUR_APP_ID/fb-login/settings/

如果您正在使用 localhost:3000,请确保您有 https://localhost:3000/auth/facebook/callback

当然,您不必将状态设置为“已上线”(在右上角的绿色开关),但在我的情况下,我现在正在部署到heroku,并很快将 localhost:3000 替换为 https://myapp.herokuapp.com/auth/facebook/callback

当然,我将在“设置/基本信息”和“设置/高级设置”中更新URL,并在基本信息中添加隐私政策URL。

假设您已正确配置了initializers/devise.rb,如果您正在使用Devise并已安装了适当的Facebook gem'omniauth-facebook','〜> 4.0' gem和gem 'omniauth', '〜> 1.6',并且您的用户表中具有必要的列,例如uid、image和provider。就是这样。


7

对于我的Node应用程序,

"facebook": {
        "clientID" : "##############",
        "clientSecret": "####################",
        "callbackURL": "/auth/facebook/callback/"
    }

将回调URL设置为相对路径

我的OAuth重定向URI如下所示:

enter image description here

请确保在Facebook授权重定向URI的末尾添加"/"

这些设置对我有效。


3

对我来说,将 hauth.done=Facebook 更改为 hauth_done=Facebook 在有效的OAuth重定向URI中解决了问题。


2

大家好

我遇到了下面这个错误enter image description here

基本上,你需要确保 Facebook 中“OAuth 重定向 URI”中的 URL 与代码中回调的 URL 相对应,请参考下面的示例图像

code

!!! 必须与以下内容匹配

enter image description here

如果错误仍然存在,请确保这三个 URL 正确!

  • 网站 URL
  • 隐私政策 URL
  • 应用程序域

您可以在开发者->设置->基础选项卡中查看它们。

希望这可以帮助您解决问题!祝编码愉快 :)


1

这可能会对某些人有所帮助。

我遇到了类似的错误信息,但只出现在开发和测试环境中,而不是生产环境。有效的重定向URI已经正确设置,包括开发和测试子域名以及生产环境。

后来发现我忘记了针对这些环境使用测试FB应用程序,在FB开发者页面上是一个单独的应用程序。必须选择它并更新其设置。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接