redirect到身份validation对话框 – “发生错误。 请稍后再试”

为什么它总是发生在我身上?

这发生在我的应用程序validation用户用户login并将用户redirect到身份validation页之后:

https://www.facebook.com/dialog/oauth?client_id=XXX&redirect_uri=http%3A%2F%2Fexample.com%2Fmyappname%2F&state=YYYYYY&scope=offline_access%2Cpublish_actions

但不是显示授权页面,Facebook显示一个错误页面

发生错误。 请稍后再试。

在尝试对我的用户进行身份validation之前,是否有任何configuration需要执行?

所有这些都是使用PHP-SDK类来完成的。

更改我网站的域名后,我遇到了同样的问题。 尽pipe我正确地改变了request_uri参数,并用新域更新了我的应用程序设置,但是错误一直在显示。 然后我意识到我的Facebook APP的ID和SECRET ID已经自动改变了,没有任何警告! 整个事情开始使用新的ID再次工作。

我和你有同样的问题。

在Facebook Developers Apps页面中,确保Sandbox模式已禁用。

在这里输入图像描述

这也发生在我身上,但所有的关键,秘密和东西都是正确的。 我发现我的应用程序运行在沙盒模式。 在https://developers.facebook.com/中转到您的应用设置,点击高级设置标签,检查您的应用是否处于沙盒模式。; 如果是禁用它,然后再试一次。 让我们知道它是否有效。

我得到这个错误,因为我从http://mysite.com开始,但在我的Facebook设置中指定了http://WWW.mysite.com – www重要…我最终通过使用.httpaccess来解决总是杀死“www”,并将FB指向http://mysite.com

最糟糕的。 子域。 永远。 :U)

在处理对话时,Facebook提供了一个'show_error'属性,默认为no但是在开发环境中可以设置为true ,对于debugging目的来说真的很有帮助。

show_error – 如果将其设置为true,则会在出现错误时显示错误代码和错误描述。

它的使用说明可以在Facebook文档中find。

我一直在debugging“发生错误,请稍后再试。” 我在文档中find这个属性之前的对话。 一旦我开始使用它,我也可以看到以下消息:

API错误代码:191

API错误说明:指定的URL不属于应用程序

错误消息:redirect_uri不属于应用程序。

我有同样的问题; 原来FB需要一个string的 appID,而不是一个int

 //DOESNT WORK: $facebook = new Facebook(array( 'appId' => 147XXXXXXXXXXX, 'secret' => 'XXXXXXXXXXXXXX', )); // WORKS: $facebook = new Facebook(array( 'appId' => '147XXXXXXXXXXX', 'secret' => 'XXXXXXXXXXXXXX', )); 

对我来说,这是因为我创build的“testing用户”是一个单独的应用程序的一部分。 我为这个应用程序创build了一个testing用户,并开始正常工作。

我知道愚蠢,但这可以为别人节省一些麻烦。

确保您的应用已configuration为使用您网站的相应url和网域。 这可能是。

根据OAUTH对话框文档:

* redirect_uri:在用户点击对话框中的button之后redirect到的URL。 您指定的url必须是具有与您的应用设置中指定的相同基本url的url,url格式为https://apps.facebook.com/YOUR_APP_NAMESPACE … *

我正在构buildoauth链接来dynamic地询问用户额外的权限,如果需要的话,我意识到,即使您redirect到https://apps.facebook.com/YOUR_APP_NAMESPACE,您必须在您的应用程序域和网站设置设置应用pipe理。; 我将域名设置为facebook.com,网站设置为Facebook的根url。

现在我的oauth对话框链接工作正常 – 即使在沙盒模式。

我在页面选项卡应用程序中遇到了这个确切的问题,因为我的生活无法解决问题所在。 它在我的testing页面上工作,但只要我活着,它不会工作。 我发现最后我通过将页面标签(例如http://www.facebook.com/<"page_name">/app_<"app_id"> )的实际URL放入“Site URL” “网站”。 这没有任何意义。 但它工作:-)

我的解决scheme是设置选项“身份validation引用”启用。 它在那之后是确定的。

修复权限错误

我更新了'appID'和'secret',然后把这个变化推回到heroku(即 – 'git push heroku master'),问题得到解决

关键是不要忘记把变化推回到英雄主人。 如果你用于在本地主机上testing,很容易忽略。

希望这可以帮助。

对我来说,问题是我用来testing应用程序的Facebook用户没有确认其Facebook的电子邮件地址。

我的客户在Facebook上设置了两个假帐户,告诉我他们没有工作。 但他忘了确认这些帐户的电子邮件地址(Facebook发送的电子邮件到他的垃圾邮件文件夹,他没有注意到)。

花了我几个小时来find这个,所以我希望它能帮助别人。

干杯!

还有一个错误的redirect链接的问题:我有一个链接开始“https://apps.facebook.com?myapplication”;….但授权后redirect会带我到“apps.facebook.com/Myapplication”因此我会收到上述消息:“错误发生,稍后再试。” 因为“apps.facebook.com”意味着“http://apps.facebook.com/Myapp”而不是“HTTPS:://apps.facebook.com /,…”

解决scheme:去facebook我的应用程序设置开发人员部分。 点击“编辑”。 在左侧菜单中select“权限”(默认情况下,菜单设置为基本),在新打开的一组设置中,将“validationstring”中的“validation令牌参数”更改为“URL碎片”。

有效! 授权完成后,用户将被带到“https://apps.facebook.com/myapp …”

另一个可能的错误是,如果你直接从Facebook SDK例子中复制代码,那么尽pipe一切正确,你也可能得到相同的错误。 http://developers.facebook.com/docs/reference/php/

这是因为在他们的例子中,他们使用反引号而不是单引号作为数组的键。 正确的代码如下。

 require_once("facebook.php"); $config = array(); $config['appId'] = 'YOUR_APP_ID'; $config['secret'] = 'YOUR_APP_SECRET'; $config['fileUpload'] = false; // optional $facebook = new Facebook($config); 

如果您的所有代码都正常工作,那么要删除此类错误,请转到Facebook Developers Apps并禁用沙盒模式

我只是自己遇到了这个问题。 我正在开发一个应用程序,所以我的主机是'localhost'。 如何在应用程序configuration中设置“localhost”并不明显。 如果您想在本地开发,请按以下步骤设置您的应用程序:

  1. 去你pipe理你的Facebook应用程序的地方。 具体来说,你想要在“设置”菜单下的“基本”。
  2. 将“localhost”添加到“App Domain”。
  3. 在“select您的应用如何与Facebook集成”下,select“网站”,然后input“http:// localhost /”。

保存并等待几分钟的信息传播,虽然它立即为我工作。

我已经把应用程序的限制,只有美国居民可以使用该应用程序。 当时出现这个错误信息时,我正在从加拿大工作。 解除限制后,一切工作。

来到这里与类似的问题,是的,我的沙盒启用。 我禁用了它,瞧,login问题就消失了。 我必须警告,这个问题不会影响开发人员和网站pipe理员,因为Facebook允许这些用户看到应用程序。 出于这个原因,我甚至不能相信用户抱怨无法login,因为我完全可以login。

我有同样的问题,并通过添加param&display = touch到url来修复它

尝试,它可能会有所帮助

回答2015年

沙箱模式已经消失。

继续到My Apps -> Your App -> Status & Review ,并将滑块更改为是:

你想让这个应用程序和所有的现场function提供给大众吗?

在这里输入图像描述

如果您是应用程序开发人员,则可能会看到更具体的错误消息,但通常这个消息意味着两件事情之一:

  1. 您的服务器返回了一个HTTP错误代码(通常是5xx)
  2. 您尝试在login后将用户发送到您的应用configuration所不允许的URL(尽pipe作为应用的pipe理员,在这种情况下,您应该看到更具体的错误消息和Facebook错误代码)

我有这个错误,因为我使用redirect_url作为参数,而不是redirect_uri

服务器端身份validation文档页面说使用redirect_url

 https://www.facebook.com/dialog/oauth? client_id=YOUR_APP_ID &redirect_url=YOUR_REDIRECT_URI &scope=COMMA_SEPARATED_LIST_OF_PERMISSION_NAMES &state=SOME_ARBITRARY_BUT_UNIQUE_STRING 

但这是不正确的。 OAuth对话框文档说,使用redirect_uri而不是工作,所以我假设你只能使用一个而不是其他:

 https://www.facebook.com/dialog/oauth/? client_id=YOUR_APP_ID &redirect_uri=YOUR_REDIRECT_URL &state=YOUR_STATE_VALUE &scope=COMMA_SEPARATED_LIST_OF_PERMISSION_NAMES 

我已经尝试了这里提到的所有答案。 但它没有工作。 我不得不删除并重新创build。 我猜这是由于新的“身份validation转介”。 如果您添加了未经批准的Open Graph对象,则可能会出现错误。

我有同样的问题,根本原因是不同的:

我以不同应用程序的testing用户身份login。 因此,我无法授权一个不是创buildtesting用户的应用程序。

当我以一个普通用户或一个testing用户的身份注销并login时,我试图授权,一切正常。

在我的情况下,与该应用程序一起使用的帐户存在年龄问题。

如果FB应用程序含有酒精含量,那么年龄小于21岁的FB用户在尝试授权时会发生错误。

您需要在您的REDIRECT URI中指定http://

对我来说,问题是,应用程序的url并没有完全匹配我运行它的url(即不同的目录,相同的域名)

解决这种types的错误是不可能的。 所以它更好地使用您的自定义对话框相同的Facebook中所示,并张贴消息再次&再次login。 即使你从Facebook上删除你的应用程序,你可以要求login和邮件成功。

我的理由是完全不同的。 我试图在页面加载后自动打开一个Feed对话框。 10次​​9次显示这个错误。 首先,我添加了@Peter Roomebuild议的show_error: true参数,但没有帮助,显示104: Invalid signature ,根本没有描述。

然后我找出原因。 代码在$(document).ready jQuery函数中。 而且似乎有些Facebook的东西还没有被加载到代码被执行的时候。 我将代码移动到$(window).load块(所有页面内容被加载后执行),问题已经解决。