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”并不明显。 如果您想在本地开发,请按以下步骤设置您的应用程序:
- 去你pipe理你的Facebook应用程序的地方。 具体来说,你想要在“设置”菜单下的“基本”。
- 将“localhost”添加到“App Domain”。
- 在“select您的应用如何与Facebook集成”下,select“网站”,然后input“http:// localhost /”。
保存并等待几分钟的信息传播,虽然它立即为我工作。
我已经把应用程序的限制,只有美国居民可以使用该应用程序。 当时出现这个错误信息时,我正在从加拿大工作。 解除限制后,一切工作。
来到这里与类似的问题,是的,我的沙盒启用。 我禁用了它,瞧,login问题就消失了。 我必须警告,这个问题不会影响开发人员和网站pipe理员,因为Facebook允许这些用户看到应用程序。 出于这个原因,我甚至不能相信用户抱怨无法login,因为我完全可以login。
我有同样的问题,并通过添加param&display = touch到url来修复它
尝试,它可能会有所帮助
回答2015年
沙箱模式已经消失。
继续到My Apps -> Your App -> Status & Review
,并将滑块更改为是:
你想让这个应用程序和所有的现场function提供给大众吗?
如果您是应用程序开发人员,则可能会看到更具体的错误消息,但通常这个消息意味着两件事情之一:
- 您的服务器返回了一个HTTP错误代码(通常是5xx)
- 您尝试在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
块(所有页面内容被加载后执行),问题已经解决。