Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
FacebookOAuth对话框显示;发生了一个错误。请稍后再试。”;_Facebook_Login - Fatal编程技术网

FacebookOAuth对话框显示;发生了一个错误。请稍后再试。”;

FacebookOAuth对话框显示;发生了一个错误。请稍后再试。”;,facebook,login,Facebook,Login,我从“Facebook for Websites”Facebook开发者页面复制了下面的HTML,并用我的应用id替换了APPID。我将此页面放在我的开发web服务器上。如果我导航到该页面,它会显示登录按钮。但是点击登录按钮,它会打开Facebook登录页面,上面写着“发生错误,请稍后再试。” 我一定错过了一些基本的东西。有什么想法吗 我的Facebook登录页面 window.fbAsyninit=函数(){ FB.init({ appId:'appId', 状态:正确, 曲奇:是的, xf

我从“Facebook for Websites”Facebook开发者页面复制了下面的HTML,并用我的应用id替换了APPID。我将此页面放在我的开发web服务器上。如果我导航到该页面,它会显示登录按钮。但是点击登录按钮,它会打开Facebook登录页面,上面写着“发生错误,请稍后再试。”

我一定错过了一些基本的东西。有什么想法吗


我的Facebook登录页面
window.fbAsyninit=函数(){
FB.init({
appId:'appId',
状态:正确,
曲奇:是的,
xfbml:是的,
oauth:true//删除了“true”之后的逗号,因为它会生成脚本错误
});
};
(职能(d){
var js,id='facebook jssdk';if(d.getElementById(id)){return;}
js=d.createElement('script');js.id=id;js.async=true;
js.src=“//connect.facebook.net/en_US/all.js”;
d、 getElementsByTagName('head')[0].appendChild(js);
}(文件);
使用Facebook登录
进一步的调查显示,它在Chrome、Firefox和Safari中运行良好,但在IE9中失败

这是它在Chrome中的URL,它工作正常:

这是IE9中导致错误的URL:

当AppID不正确时,我会出现此错误。仔细检查你的AppID。

因为它是IE特有的,所以答案总是(99.5%的情况下)你的服务器没有发送p3p头。有关如何设置这些bug以使IE玩得更好的信息,请参阅。

在我有时间进行调试会话后,我找到了解决方法

我用一个假域名在本地开发我的应用程序。我将本地主机文件中的域映射到127.0.0.1(我这样做的原因与本文无关)

当我导航到Facebook登录页面时,IE将URL中的127.0.0.1作为返回URL传递到Facebook。127.0.0.1与我在Facebook上为我的应用程序配置的URL不匹配,因此登录页面会显示“发生错误”消息(如果得到正确的错误消息会更好)

其他浏览器将我的假域名作为返回URL发送,它们没有问题

在任何情况下,我都停止使用假域名,并确保域名与Facebook中的配置完全匹配,现在问题已经解决了


谢谢你的回复。zerkms关于比较URL的建议最终导致了解决方案。

我也遇到了同样的问题,但这里的域名可能是问题所在。当我们创建facebook appid时,在“使用facebook登录的网站”一节中,我们需要正确指定“网站URL”。意味着当我们在本地测试应用程序时,我们需要将url称为“http://localhost://{portnumber}“如果我们在服务器上运行,我们需要指定实际的url,如”http://mywebsite.com“

已解决(至少对我来说):我的Facebook应用程序设置中没有配置“使用Facebook登录的网站”,因为我使用了页面选项卡应用程序。没有外部网站。不幸的是,我在没有应用程序->的facebook iframe的情况下进行了调试,这就是原因

为了消除这个错误,我填写了“使用Facebook登录的网站”,并在应用程序设置中填写了“应用程序域”输入


奇怪的是,这个问题只发生在IE中

之所以会这样,是因为我的本地so上没有配置SSL。他没有工作。 然后在我的应用程序中,我启用了沙箱模式并删除了安全url,如安全画布url

注意:当您启用沙盒模式时,只有应用程序创建者才能访问facebook登录。其他用户将看到下面的消息

An error occurred. Please try again later.

确保您在应用程序设置中没有(待定)作为开发人员/管理员。

更新的解决方案:在FB应用程序配置中,您需要添加一个网站平台,并设置网站的URL。然后,您可以将我设置的应用程序域添加到我们网站的基本域(例如,对于
http://www.mycoolwebsite.com
,只需使用
mycolwebsite.com


重要提示:为了使此功能正常工作,您需要使用应用程序URL的子域进行本地开发。通过修改开发计算机上的主机文件以使用网站不存在的子域(如
local.mycolwebsite.com
),您可以轻松做到这一点。如果您不熟悉如何操作,只需在谷歌上为您的平台(如mac/windows)编辑主机文件。

这是您实际运行的代码吗?难道你没有忘记指定你的应用程序id吗?是的,我用我的实际应用程序id替换了APPID,从Facebook应用程序页面粘贴副本。如果这对其他人有效,那么我的应用可能有问题。但这个错误消息一点帮助都没有。另一条信息:它在Chrome、Firefox和Safari中运行良好,也就是说,我按预期获得了Facebook登录页面。但它在IE9上失败,我得到“发生了一个错误。请稍后再试。”如果你比较chrome和IE9中生成的url会怎么样?url确实不同。IE是唯一停留在facebook.com/dialog/oauth上的人。其他浏览器最终都会出现在facebook.com/login.php中。在我尝试其他浏览器之前,我一直怀疑这一点。由于它可以在Chrome、Firefox和Safari上运行,但在IE9上失败,所以我认为我的AppID是好的。这个问题看起来是IE9特有的。这可能会为我解决它。查看明显的:)