我从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中失败。
答案 0 :(得分:4)
在我有一段时间进行调试后,我想出来了。
我使用虚假域名在本地开发我的应用程序。我将本地主机文件中的域映射到127.0.0.1(我这样做是出于与此帖无关的原因)。
事实证明,当我导航到Facebook登录页面时,IE将URL中的127.0.0.1作为返回URL传递给facebook。 127.0.0.1与我在Facebook上为我的应用程序配置的URL不匹配,因此登录页面显示“发生错误”消息(获得正确的错误消息会很好)。
其他浏览器将我的假域名作为返回网址发送,并且没有任何问题。
无论如何,我停止使用虚假域名并确保域名与Facebook中的配置完全匹配,现在问题已经消失。
感谢所有回复。 zerkms建议比较URL最终导致解决方案。
答案 1 :(得分:4)
已解决(至少对我来说):我在我的Facebook应用设置中没有配置“Facebook登录网站”,因为我做了一个页面选项卡应用程序。没有外部网站。不幸的是,我在应用程序周围没有facebook iframe进行了调试 - &gt;这就是原因。
要摆脱我填写“Facebook登录网站”的错误,并在应用程序设置中填写“应用程序域”输入。
奇怪的是,这个问题只在IE中出现了!
答案 2 :(得分:2)
确保您在应用设置中没有(待定)作为开发人员/管理员。
答案 3 :(得分:1)
AppID不正确时出现此错误。仔细检查您的AppID。
答案 4 :(得分:1)
我之所以这样,是因为我的本地https://mywebsite.in/未配置SSL。没有用。 然后在我的应用程序中,我启用了沙箱模式,并删除了像Secure Canvas URL这样的安全URL。
注意:启用沙盒模式时,只有app creator才能访问facebook登录。其他用户将在消息
下面An error occurred. Please try again later.
答案 5 :(得分:0)
由于它是IE特定的,答案一直是(99.5%的时间)您的服务器没有发送p3p标头。有关如何设置这些bugger的信息,请参阅http://www.hanselman.com/blog/TheImportanceOfP3PAndACompactPrivacyPolicy.aspx,以便IE播放得很好。
答案 6 :(得分:0)
我遇到了同样的问题,但这里的域名可能就是问题所在。当我们创建facebook appid时,在本节“有Facebook登录的网站”中,我们需要正确指定“网站URL”。意味着当我们在本地测试应用程序时,我们需要将URL称为“http:// localhost:// {portnumber}”,如果我们在服务器中运行,我们需要指定实际的URL,例如“http:// mywebsite。 COM”。
答案 7 :(得分:0)
更新的解决方案:在您的FB App配置中,您需要添加一个网站平台,其中包含您网站的URL集。然后,您可以添加我设置到我们网站的基本域的应用域名(例如,对于http://www.mycoolwebsite.com
这样的网址,只需使用mycoolwebsite.com
)。
重要提示:为了实现此目的,您需要使用应用网址的子域进行本地开发。您可以通过修改开发计算机上的hosts文件来轻松完成此操作,以使用您网站中不存在的子域,例如local.mycoolwebsite.com
。如果您不熟悉如何执行此操作,只需为您的平台(例如mac / windows)谷歌“编辑主机文件”。