我从Facebook for Facebooksites的Facebook开发者页面复制了下面的HTML,并用我的应用程序ID替换了APPID . 我把这个页面放在我的开发Web服务器上 . 如果我导航到该页面,它会使登录按钮正常 . 但是点击登录按钮,它会打开Facebook登录页面,上面写着“发生错误 . 请稍后再试 . ”
我必须遗漏一些基本的东西 . 有任何想法吗?
<html>
<head>
<title>My Facebook Login Page</title>
</head>
<body>
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
FB.init({
appId : 'APPID',
status : true,
cookie : true,
xfbml : true,
oauth : true // removed a comma after 'true' as it generates a script error
});
};
(function(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);
}(document));
</script>
<div class="fb-login-button">Login with Facebook</div>
</body>
</html>
进一步调查表明,它在Chrome,Firefox和Safari中运行良好,在IE9中失败 .
8 回答
在我有一段时间进行调试会话后,我想出来了 .
我使用虚假域名在本地开发我的应用程序 . 我将我的本地hosts文件中的域映射到127.0.0.1(我这样做的原因与此帖无关) .
事实证明,当我导航到Facebook登录页面时,IE将URL中的127.0.0.1传递给facebook作为返回URL . 127.0.0.1与我在Facebook中为我的应用程序配置的URL不匹配,因此登录页面显示“发生错误”消息(获得正确的错误消息会很好) .
其他浏览器将我的假域名作为返回URL发送,并且它们没有问题 .
在任何情况下,我都停止使用假域并确保域名与Facebook中的配置完全匹配,现在问题就消失了 .
感谢所有的回复 . zerkms建议比较URL最终导致解决方案 .
已解决(至少对我而言):我在我的Facebook应用设置中没有配置“Facebook登录网站”,因为我做了一个页面选项卡应用程序 . 没有外部网站 . 不幸的是我没有在应用程序周围的facebook iframe进行调试 - >这就是原因 .
为了摆脱我填写“Facebook登录网站”的错误,并在应用程序设置中填写“应用程序域”输入 .
奇怪,这个问题只在IE中发生了!
确保您在应用程序设置中没有(待定)作为开发人员/管理员 .
当AppID不正确时,我收到此错误 . 仔细检查您的AppID .
我得到这个,因为我的本地没有配置SSL所以https://mywebsite.in/ . 没有用 . 然后在我的应用程序中,我启用了沙箱模式,并删除了像Secure Canvas URL这样的安全URL .
注意:启用沙盒模式时,只有app creator才能访问facebook登录 . 其他用户将在下面留言
由于它是IE特定的,答案一直是(99.5%的时间)您的服务器没有发送p3p标头 . 有关如何设置这些bugger的信息,请参阅http://www.hanselman.com/blog/TheImportanceOfP3PAndACompactPrivacyPolicy.aspx,以便IE播放得很好 .
我有同样的问题,但这里的域名可能是问题 . 当我们创建facebook appid时,在本节“有Facebook登录的网站”中,我们需要正确指定“网站URL” . 意味着当我们在本地测试应用程序时,我们需要将URL称为“http:// localhost:// ”,如果我们在服务器中运行,我们需要指定实际的URL,例如“http:// mywebsite . COM” .
更新的解决方案:在您的FB应用程序配置中,您需要在您的网站's URL set. Then you can add App Domains which I set to our website'的基本域中添加一个网站平台(例如,对于像
http://www.mycoolwebsite.com
这样的URL,只需使用mycoolwebsite.com
) .IMPORTANT: 为了使您能够使用'll need to be using a subdomain of your app'本地开发的URL . 您可以通过修改开发计算机上的hosts文件来轻松完成此操作,以使用您网站中不存在的子域,例如
local.mycoolwebsite.com
. 如果您不熟悉如何执行此操作,只需为您的平台(例如mac / windows)谷歌'edit hosts file' .