我一直在努力解决在 IE8 上使用 Facebook Connect 的问题,我似乎已经走到了死胡同:
我们有一个 Facebook 游戏 (Canvas iFrame) 在使用 IE8 时报告了问题。我们已按照 FB.init 上的说明进行操作开发者页面完全正确,但无处可去。
我们尝试使用 channelUrl 修复程序和各种修复程序,所有这些都已概述 here .
我们的响应 header 正在发送 P3P header :
P3P CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"
我们还测试了此集成的异步和同步版本,结果均未产生任何差异。
尽管我们做出了所有努力,但在 IE8 上,FB.getSession() 始终返回未定义的值。在报告给 Facebook 的错误中,我查看了大量信息,但遗憾的是没有成功。他们将其解决为不是错误......尽管在他们认为问题已解决很久之后,用户仍在线程上持续报告该问题。
在最后一次尝试中,我转向这里,并从一个完整的测试 FB 应用程序开始,该应用程序除了 FB.init JS 示例添加了一些控制台日志记录以显示 FB.getSession有一个uid。
如果您要回复此问题,请问您是否正在针对 IE8 检查此问题并正在查看控制台,该控制台已成功加载 FB session 将写
FB: [object Object] FB.getSession().uid: [your fb id]
http://apps.facebook.com/fb-js-issue
里面的代码如下:
<div id="fb-root"></div>
<script type="text/javascript">
window.fbAsyncInit = function() {
FB.init({
appId: 'appId',
status: true,
xfbml: true,
cookie: true,
channelUrl: "http://ourserver.com/channelUrl.htm"
});
FB.Canvas.setAutoResize();
console.log("Running FB test");
setTimeout(function() {
console.log("FB: " + FB + " FB.getSession().uid: " + FB.getSession().uid);
}, 5000);
};
(function () {
var e = document.createElement('script');
e.async = true;
e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
document.getElementById('fb-root').appendChild(e);
}());
</script>
总的来说,该示例应用程序运行良好,但在极少数情况下甚至会出现问题。
我们的真实应用程序(使用相同的 FB.init 方法)在 IE 上始终遇到 FB.getSession 未定义问题,因此无法加载
http://apps.facebook.com/party-on
更新:我们已经确定该问题对 Windows XP 或 Vista 上的 IE8 影响更严重 - Windows 7 上的 IE8 似乎问题较少(尽管不是 100%)
如何克服这个问题?
所以..鉴于这个问题看起来很普遍而且没有明确的解决办法,缺少一些尚未公开讨论的严肃魔术最终会解决这个问题,真正有启发性的是强调其他可能的方法与他们展示的 FB.connect 集成
我提到这一点的原因是,当您查看 CityVille 和 FarmVille 如何进行他们的 FB 集成时,它与 FB 自己作为开发人员文档编写的内容相去甚远。嗯,有趣
在此阶段,任何新鲜的想法和不同的 Angular 都将受到热烈欢迎!!
最佳答案
只是一个随机问题,您真的在 IE 8 模式下使用 IE 8 吗?请小心,因为有时 IE 8 会切换到兼容模式 (IE 7),然后您就会遇到一系列全新的问题。您页面上的此代码强制 IE 以最新版本呈现。它必须是第一个元标记。
<meta http-equiv="X-UA-Compatible" content="IE=edge" >
http://msdn.microsoft.com/en-us/library/cc288325(v=vs.85).aspx
关于javascript - Facebook 连接使用 IE8 导致问题;任何解决方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6103882/