重定向到身份验证对话框 - “发生错误。请稍后再试”

时间:2011-08-29 15:03:39

标签: php facebook facebook-graph-api

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

在我的应用程序验证用户用户登录并将用户重定向到身份验证页面后,会发生这种情况:

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没有显示授权页面,而是显示错误页面

  

发生错误。请稍后再试。

在尝试验证我的用户之前,是否需要进行任何配置?

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

34 个答案:

答案 0 :(得分:64)

我遇到了和你一样的问题。

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

enter image description here

答案 1 :(得分:38)

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

答案 2 :(得分:16)

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

答案 3 :(得分:7)

我收到此错误是因为我从http://mysite.com开始,但在我的Facebook设置中指定了http://WWW.mysite.com - www重要...我最终通过使用.httpaccess来解决问题“www”,并将FB指向http://mysite.com

最差。子域。永远。 :U)

答案 4 :(得分:7)

使用Dialogues时,Facebook提供的“show_error”属性默认为no,但可以在开发环境中设置为true,对调试非常有用。

  

show_error - 如果设置为true,则在出现错误时将显示错误代码和错误说明。

可以在Facebook Docs

中找到使用说明

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

  

API错误代码:191

     

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

     

错误消息:redirect_uri不归应用程序所有。

答案 5 :(得分:5)

我有同样的问题;事实证明FB需要 字符串 appID,而不是 int ......

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

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

答案 6 :(得分:5)

对我来说,这发生了,因为我创建的“测试用户”是一个单独的应用程序的一部分。我为这个应用程序创建了一个测试用户,它开始正常工作。

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

答案 7 :(得分:3)

确保您的应用已配置为使用相应的网址&您网站的域名。可能就是这样。

答案 8 :(得分:3)

我的解决方案是将选项“Authenticated Referrals”设置为启用。在此之后它真正得到了修复。

Fix permissions error

答案 9 :(得分:3)

我在页面选项卡应用程序上遇到了这个确切的问题,因为我的生活无法解决问题所在。它在我的测试页面上工作,但是一旦它实现它就无法工作。我最终发现我通过将实际的URL放到页面标签(即http://www.facebook.com/<"page_name">/app_<"app_id">)到“网站”下的“网站URL”来解决问题。这没有任何意义。但它有效: - )

答案 10 :(得分:3)

根据OAUTH Dialog文档:

* redirect_uri:用户点击对话框中的按钮后重定向到的网址。您指定的网址必须是与您的应用设置中指定的基本域相同的网址,即https://apps.facebook.com/YOUR_APP_NAMESPACE形式的Canvas网址... *

我正在动态构建oauth链接,以便在需要时向用户询问其他权限,我意识到,即使您要重定向到https://apps.facebook.com/YOUR_APP_NAMESPACE,您也必须在应用程序管理中设置应用程序域和网站设置。我将域名设置为facebook.com,将网站设置为facebooks root url。

现在我的oauth对话框链接工作正常 - 即使在沙盒模式下也是如此。

答案 11 :(得分:2)

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

答案 12 :(得分:2)

另一个可能的错误,如果您直接从Facebook SDK示例复制代码,那么尽管一切正确,您可能会得到相同的错误。 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);

答案 13 :(得分:2)

我更新'appID'和'secret'然后将更改推回到heroku(即 - 'git push heroku master')后问题得到解决

关键是不要忘记将更改推回到heroku master。如果你习惯在localhost上测试,很容易被忽视。

希望这有帮助。

答案 14 :(得分:2)

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

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

花了我几个小时才找到这个,所以我希望它可以帮到某个人。

干杯!

答案 15 :(得分:2)

错误的重定向链接也有问题:我有一个以“https://apps.facebook.com?myapplication”开头的链接....但是在授权后重定向会把我带到“apps.facebook.com / Myapplication“因此我会收到上述消息:”发生错误。请稍后再试。“因为“apps.facebook.com”...表示“http://apps.facebook.com/Myapp”而不是“HTTPS://apps.facebook.com /,...”

解决方案:转到facebook开发人员部分的应用程序设置。点击“修改”。在左侧菜单中选择“权限”(默认情况下,菜单设置为“基本”),在新打开的设置中,将“查询字符串”中的“验证令牌参数”更改为“URL片段”。

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

答案 16 :(得分:1)

我遇到了同样的问题,并通过将param&amp; display = touch添加到url

来修复它

尝试,这可能会有所帮助

答案 17 :(得分:1)

遇到类似的问题,是的,我的Sandbox已启用。我禁用了它,瞧,登录问题就消失了。我必须警告,这个问题不会影响开发人员和网站管理员,因为Facebook允许这些用户看到该应用程序。出于这个原因,我甚至不相信用户抱怨无法登录,因为我能够毫无问题地登录。

答案 18 :(得分:1)

2015年答案

沙盒模式消失了。

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

您想让这个应用及其所有实时功能向公众开放吗?

enter image description here

答案 19 :(得分:1)

我已经限制了只有美国公寓才能使用该应用的应用。当我出现此错误消息时,我正在加拿大工作。删除限制后一切正常。

答案 20 :(得分:1)

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

  1. 转到您管理Facebook应用的地方。具体来说,您希望在“设置”菜单下的“基本”中。
  2. 将“localhost”添加到“App Domain”。
  3. 在“选择您的应用与Facebook的集成方式”下,选择“网站”,然后输入“http:// localhost /”。
  4. 保存并等待几分钟以传播信息,尽管它可以立即为我工作。

答案 21 :(得分:0)

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

答案 22 :(得分:0)

就我而言,该应用程序使用的帐户存在年龄问题。

如果FB应用程序含有酒精含量,那么年龄小于21岁的FB用户在尝试使用它时会抛出错误。

答案 23 :(得分:0)

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

我以其他应用程序的测试用户身份登录。因此,我无法授权不是创建测试用户的应用程序。

当我注销并以我试图授权的应用程序的常规用户或测试用户身份登录时,一切正常。

答案 24 :(得分:0)

我曾尝试过这里提到的所有答案。但它没有用。我不得不删除并重新创建。我猜它是由于新的“Authenticated Referral”。如果您添加了未经批准的Open Graph对象,则可能会出错。

答案 25 :(得分:0)

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

答案 26 :(得分:0)

无法解决此类错误。因此,最好使用与Facebook中显示的相同的自定义对话框,并再次发布消息&amp;再次没有登录。即使您从Facebook删除了您的应用程序,您也可以要求登录并成功发布消息。

答案 27 :(得分:0)

我遇到此错误是因为我使用redirect_url作为参数而不是redirect_uri

Server-Side Authentication doc页面说明要使用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 Dialog doc说使用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

答案 28 :(得分:0)

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

然后我弄明白了原因。代码在$(document).ready jQuery函数中。并且似乎在代码执行时尚未加载某些facebook内容。我将代码移动到$(window).load块(在加载所有页面内容后执行),问题已经解决。

答案 29 :(得分:0)

我知道你可能会得到答案,但这是为了那些仍在寻求解决方案的人。

您可以尝试以上所有解决方案,但只需记住在检查其他解决方案之前从设备或模拟器中删除以前的应用。

我尝试了所有解决方案,但没有得到任何回复,因为我没有删除以前的应用程序,只清理构建不满足条件。希望它可以帮助某人。 :)

答案 30 :(得分:0)

设置&gt;高级&gt;安全&gt;有效的oauth重定向URI

enter image description here

答案 31 :(得分:0)

我遇到了同样的问题,原因是我的 app was not live 并公开发布。

  

我在设置标签下的联系电子邮件中添加了我的电子邮件ID,并使我的应用程序生效(之前已禁用以进行直播)。

让我的应用程序正常显示共享对话框,其中包含正确的图像,标题和说明,并在底部显示我的应用名称。

答案 32 :(得分:0)

检查您的appid并确保您更新了网站网址 https://developers.facebook.com/

中的移动网站网址

答案 33 :(得分:0)

如果您是应用开发者,您可能会看到更具体的错误消息,但通常该消息意味着以下两种情况之一:

  1. 您的服务器返回了HTTP错误代码(通常为5xx)
  2. 您尝试在登录后将用户发送到您的应用配置不允许的网址(虽然作为该应用的管理员,您应该会看到更具体的错误消息和Facebook错误代码)