Facebook Connect - 登录后弹出窗口挂起无限循环

时间:2009-11-10 13:50:41

标签: facebook

症状:连接后,会打开一个弹出窗口,用户输入用户名+密码。弹出窗口变成空白并保持打开状态。

没有调用登录功能(但页面刷新显示已设置cookie并且用户实际已登录)。

我调试了代码,发现xdcommReceiver.js文件卡在函数dispatchMessage的无限循环中。

进一步调查表明,该行发生了例外情况:

func = hostWindow.FB.XdComm.Server.singleton.onReceiverLoaded;

例外情况是“http://www.example.orghttp://example.org获取属性Window.FB的权限被拒绝。”

我该如何解决?

其他信息:

网站连接网址为http://www.example.org/ 它发生的页面格式为:http://www.example/org/folder/folder2/

5 个答案:

答案 0 :(得分:1)

当某些JavaScript代码更改域时,也会发生此问题。例如,您的页面位于a.x.com中。然后页面中的脚本执行类似

的操作
<script>
    document.domain = "x.com";
<script>

您的域名已更改,此问题就会出现。

答案 1 :(得分:1)

解决方案是将document.domain=site.com添加到xd_received.htm文件中(它隐藏在Facebook维基文档的某处)。

答案 2 :(得分:1)

对于那些遇到循环问题并使用Facebook API开发者页面中的示例代码的人,我有一个提示:

我遇到了同样的问题。我错误的是当我根据需要修改脚本时,我意外地将cookie替换为_cookie - 这改变了变量“cookie:true”并进行了无限循环。

FB.init({appId: '<?= FACEBOOK_APP_ID ?>', status: true, _cookie: true, xfbml: true});

该行应该说:

FB.init({appId: '<?= FACEBOOK_APP_ID ?>', status: true, cookie: true, xfbml: true});

我希望这会有所帮助...

答案 3 :(得分:0)

尝试使用xd_receiver文件,而不是使用脚本使其可用。还要确保您的页面能够找到xd_receiver文件。为避免出现任何问题,您可以在代码中指定xd_receiver文件的完整路径:

www.yoursite.com/xd_receiver.htm

答案 4 :(得分:0)

我几天前发布了http://forum.developers.facebook.com/viewtopic.php?pid=201495,这次修改是我发现的唯一可行的方法。

通过保留原始的xd_receiver.htm文件,即使指定完整路径,我也无法发布我的网站。如果您看到我如何配置任何东西(请查看我的帖子)以使其无需修改即可使用,请告诉我!