繁体   English   中英

如何让新的Facebook Javascript SDK在IE8中运行?

[英]How can I get the new Facebook Javascript SDK to work in IE8?

我把我的页面简化为最简单的东西,它仍然无法在IE8中运行。

这是整个 html页面:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml" xml:lang="en" lang="en">
<head></head>
<body>
<div id="fb-root"></div>
<fb:login-button></fb:login-button>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>
  FB.init({appId: 'd663755ef4dd07c246e047ea97b44d6a', status: true, cookie: true, xfbml: true});
  FB.Event.subscribe('auth.sessionChange', function(response) {
    alert(JSON.stringify(response));
  });
  FB.getLoginStatus(function (response) { alert(JSON.stringify(response)); });
</script>
</body>
</html>

在firefox,safari和chrome(在Mac上),我得到了我期望的行为:如果我没有登录Facebook,我会在页面加载时获得一个空会话对话框。 当我单击“登录”按钮并登录时,我会收到第二个会话对话框。 如果我登录Facebook,我会收到两个会话对话:一个来自getLoginStatus调用,另一个来自事件。

在IE8中,加载页面时没有对话框。 不调用getLoginStatus回调。 当我单击Login按钮时,我会看到一个对话框,但它有一个非常奇怪的错误:

无效的论点

Facebook Connect跨域接收器URL( http://static.ak.fbcdn.net/connect/xd_proxy.php#?=&cb=f3e91da434653f2&origin=http%3A%2F%2Fmysiteurl.com%2Ff210cba91f2a6d4&relation=opener&transport=flash&frame=f27aa957225164&result = xxRESULTTOKENxx )必须将应用程序的Connect URL( http://mysiteurl.com/ )作为前缀。 您可以在“应用程序设置编辑器”中配置“连接URL”。

我已经清理了上面的Connect URL,但它是正确的。

该对话框确实有用户名/密码字段。 如果我登录,对话框会被重定向到我的Connect URL,但是没有fb cookie,所以当然没有任何作用。

我在这做错了什么?

更新(2010年9月10日):

这个问题不普遍。 我的网站网址中有一个端口号,因为它是我的测试网站: http//mysiteurl.com12345 没有端口号,ie8似乎没问题。 使用端口号,它会像以前一样继续失败。 但是,错误消息现在更简洁:

无效的论点

应用程序配置不允许使用URL

此外,这个问题是IE特有的(实际上,我怀疑它是特定于闪存XD传输,但我不知道如何确认)。 它适用于我尝试过的所有其他平台/浏览器对。

我仍然没有接近使用端口号的URL进行此工作。

尝试将channelUrl param传递给您的FB.init函数,并按照以下参考链接的建议创建channel.html文件:

https://developers.facebook.com/docs/reference/javascript/

他们真的应该发表这个。 但是当你在随机端口(例如8080)上使用本地服务器时,你必须使用127.0.0.1而不是localhost,否则它将无法在IE中运行。 还要确保facebook应用程序设置中的连接URL设置为127.0.0.1

我花了好几个小时试图解决这个问题。 我的情况有点不同,但我觉得可能是同一个问题:

任何时候我都会在FB.Event.Subscribe函数下执行命令,IE8会在触发事件实际发生变化之前执行我的整个命令(例如,当订阅'auth.login'时,cb函数会在用户键入他/之前执行她的用户名和密码)。 当然,我的回调函数取决于用户登录所需的数据。

我在IE,Firefox和Chrome中测试,IE是唯一给我带来麻烦的浏览器。 我也让我的测试站点在80以外的端口下运行,但我还没有尝试过特定的诊断来查明问题,尽管我很确定它与此有关。

希望这有助于任何有类似问题的人至少知道其他可能的问题。 希望尽快找到答案或解决方法!

如果您的问题仅在端口80以外的端口上运行您的站点时发生,那么您有答案:仅在端口80上运行它。这个问题/问题的变体在Facebook应用程序开发中反复出现,其中人们运行测试或端口80以外的端口上的开发站点。在80端口上运行它!

这并不是说您要在生产中的不同端口上运行,因此请使您的测试环境模仿生产。

您是否有合理的理由要在备用端口号上运行? 真的,在端口80上运行尽可能多的站点并不困难。

我在IE中遇到了同样的问题。 适用于Firefox和Chrome。 但后来我才明白了。

在您的Facebook应用程序设置中,在“网站”选项卡中,我确定您已填写“站点URL”,但现在您需要填写其下方的“站点域”字段,它将适用于IE。

我不知道为什么没有那个领域它仍适用于IE以外的浏览器,在Facebook的结尾没有任何意义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM