我正在使用Facebooker2创建一个Facebook IFrame应用程序,该应用程序作为Facebook页面内的选项卡运行。
我的目标是能够使用社交插件,比如点赞按钮和评论等
<div class="fb-like" data-href="http://www.myurl.com" data-send="false" data-layout="button_count" data-width="450" data-show-faces="false"></div>
并尝试通过调用来初始化FB JS SDK
<%= fb_connect_async_js %>
输出
<div id="fb-root"><script async="" src="http://connect.facebook.net/en_US/all.js"></script></div>
<script>
window.fbAsyncInit = function() {
FB.init({
appId : 'APP_ID',
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
oauth : true,
xfbml : true // parse XFBML
});
};
(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>
这以前也起过作用,大约一个月前Facebook推送了他们的最后一次平台更新后就停止了。现在根本没有渲染"点赞"按钮。我也尝试了XFBML方法,但没有成功。
注意:我可以使用FB.publish发布提要,也可以使用IFrame方法创建类似按钮。
我查看了文档,没有发现任何地方提到社交插件不能在IFrame应用程序中使用。
有什么想法吗?
我遇到了同样的问题,我能找到的唯一解决办法是设置一个计时器来执行FB.XFBML.parse();
如果有人有更好的解决方案,我会很高兴听到!
window.fbAsyncInit = function() {
setTimeout(function(){
FB.XFBML.parse();
FB.Event.subscribe('auth.login', function(response) {
fbLogin();
});
FB.Event.subscribe('auth.logout', function(response) {
fbLogout();
});
/* Additional initialization code here */
},
1000);
var params = {
appId : facebookAppId,
channelUrl : siteurl+'facebookChannelFile.php',
status : true,
cookie : true,
oauth : true,
xfbml : true
};
FB.init(params);
};