我一直在努力解决在IE8上使用Facebook时遇到的问题,我似乎已经到了一个死胡同:
我们有一个Facebook游戏(画布iFrame),它在使用IE8时出现了问题。我们完全遵循了FB.init开发人员页面上的说明,但一无所获。
我们尝试使用channelUrl修复和各种类型的修复,这些都是概述的这里。
我们的响应头正在发送P3P头:
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会话成功加载后将写入。
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上的IE8或Windows7上的IE8影响更严重(虽然不是100%)。
如何克服这一切?
所以..。考虑到这个问题似乎很常见,而且没有一个解决方案是明确的,除了一些尚未公开讨论的真正解决这个问题的严重魔法之外,真正有指导意义的是强调与FB.connect集成的其他可能方法,而不是他们展示的方法。
我提到这一点的原因是,当您查看CityVille和FarmVille如何进行FB集成时,与FB本身作为开发人员文档的作者一点关系都没有。嗯,有意思
任何新的想法和不同的角度都会在这个阶段受到热烈欢迎!
发布于 2011-06-12 05:19:11
只是一个随机的问题,你真的在IE8模式下使用IE8吗?要小心,因为有时候IE8会切换到兼容模式(IE7),然后您将处理一组全新的问题。页面上的代码强制IE在最新版本中呈现。它必须是第一个元标签。
<meta http-equiv="X-UA-Compatible" content="IE=edge" >http://msdn.microsoft.com/en-us/library/cc288325(v=vs.85).aspx
发布于 2012-08-21 15:42:26
我解决了一个类似的问题,就是在body标记之后添加异步加载。
<body>
<div id="fb-root"></div>
</body>
<script>
window.fbAsyncInit = function() {
FB.init({
appId : 'yourAppId',
status : true,
cookie : true,
xfbml : true,
frictionlessRequests : true
});
FB.Canvas.setAutoGrow();
FB.Event.subscribe('auth.statusChange', yourCode);
};
(function(d){
var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
ref.parentNode.insertBefore(js, ref);
}(document));
</script>发布于 2012-11-17 08:13:42
尝试删除整个应用程序中的所有console.log()调用。
https://stackoverflow.com/questions/6103882
复制相似问题