javascript - Facebook 连接使用 IE8 导致问题;任何解决方法?

标签 javascript internet-explorer-8 facebook

我一直在努力解决在 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/

相关文章:

javascript - 重置缩放: only updates on pan?

javascript - Bootstrap 选项卡 Vanilla JS 显示事件不起作用

internet-explorer-8 - 如何解决 IE 7 和 8 中的不透明度和边框半径冲突?

ios - 如果用户取消 Facebook 登录,如何返回应用程序?

c# - 无需用户干预即可获取访问 token C# SDK

javascript - extjs 3.4 如何动态添加复选框到工具栏

javascript - Node.js 'request' 带有可选参数的模块包装器 - 如何写得更简洁?

jquery - 在 IE8 中鼠标悬停后图像一直显示

html - IE 8 背景覆盖拉伸(stretch) Bootstrap

javascript - 分享来自 Facebook FanPage 的帖子吗?