导致FB.Event.subscribe事件触发的原因是什么?
我知道点击一个fb:login-button元素可以触发它,但FB.Event.subscribe事件会在创建Facebook会话时触发。
当Facebook会话存在时,其他FBML元素是否会自动触发此事件,或者无论是否存在任何FBML元素,都会触发此事件?
答案 0 :(得分:5)
FB.Event.subscribe
本身不是一个事件,它就像addListener,它将一个事件挂钩到一个函数。您需要检查代码以查看您正在使用的事件:
我认为您使用了auth.sessionChange
事件。
答案 1 :(得分:2)
我遇到了同样的问题,但我找到的解决方案是:
FB.init
中,将参数状态设置为 false (在我看到的所有样本中,默认情况下都是如此)所以你会以类似的东西结束:
<script>
window.fbAsyncInit = function () {
FB.init({
appId: 'YOUR-APPID',
channelUrl: '//www.YOUR-DOMAIN.com/channel.html',
status: false,
cookie: true,
xfbml: true
});
FB.Event.subscribe("auth.statusChange", function (response) {
if (response.authResponse)
{
if (FBLoginCallback) FBLoginCallback();
}
});
};
(function (d) {
var js, id = 'facebook-jssdk'; if (d.getElementById(id)) { return; }
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/pt_BR/all.js";
d.getElementsByTagName('head')[0].appendChild(js);
} (document));
</script>
请注意,我创建了一个名为 FBLoginCallback()的回调函数,因此我可以在MasterPage中使用此代码,并在分离的页面中定义回调处理函数,每个页面都有其特定需求。
答案 2 :(得分:1)
您只能通过查看Facebook文档或查看JS SDK源代码来了解触发每个事件的内容。以下是这两者的链接:
在JS源代码中,查找对 FB.Event.fire(...)的调用。您可能需要进行更多分析以确定具体条件,特别是因为我的JS版本来自SDK的缩小版本。 Facebook目前尚未公布其实际来源,因此我们必须尽量减少最终的SDK。