我正在写一个facebook应用程序,它使用badgeville来奖励玩家。有时需要在页面加载时获得积分,但我在页面上也有一些Facebook社交插件,如评论框和按钮。看来因为页面正在等待这些加载,所以不会加载badgeville的东西,以允许授予点的功能正确运行。
一旦facebook完成了这项工作,是否有任何可用于运行该功能的事件? 我找到了“FB.Canvas.setDoneLoading();”但我不确定如何实施它。
由于
答案 0 :(得分:0)
当然,你可能有这样的事情:
<script>
window.fbAsyncInit = function() {
FB.init({
appId : 'YOUR APP ID',
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true, // parse XFBML
channelUrl : 'http://www.yourdomain.com/channel.html', // Custom Channel URL
oauth : true //enables OAuth 2.0
});
FB.Canvas.setDoneLoading(
function () {
alert("Done loading");
});
};
(function() {
var e = document.createElement('script');
e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
e.async = true;
document.getElementById('fb-root').appendChild(e);
}());
</script>
这将确保在FB函数设置为初始化之前不会调用setDoneLoading()。
答案 1 :(得分:0)
假设您正在进行服务器端登录,您应该使用FB.Event.subscribe。如果要初始化状态为true的FB对象,则在FB对象初始化后将触发 auth.statusChange 或 auth.authResponseChange 事件。
FB.Event.subscribe('auth.statusChange', function(response) {
if(response.status == 'connected') {
runFbInitCriticalCode();
}
});
FB.init({
appId : 'appId',
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});