在我的网络平台上,我向用户展示了一个 Facebook likebox。
单击likebox的like按钮后,我需要知道用户何时登录Facebook 。
我尝试通过对事件auth.statusChange和auth.authResponseChange使用FB.Event.subscribe函数(在文档中建议)来做到这一点,但没有成功。
这是我使用的代码示例:
/* Just to wait facebook functions are ready */
var handle = setInterval(function() {
if(typeof(FB) != 'undefined'){
fbReady();
clearInterval(handle);
}
}, 1000);
/* Get connection status */
function fbReady() {
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
var uid = response.authResponse.userID;
var accessToken = response.authResponse.accessToken;
status == "connected";
} else if (response.status === 'not_authorized') {
status == "not_authorized";
} else {
status == "unknown";
}
/* I don't use status yet */
setSubscriptions(status);
});
}
/* set event listeners for login and liked */
function setSubscriptions(status){
/* Like event subscription */
FB.Event.subscribe('edge.create',
function(response) {
alert('user liked the page');
});
/* status change event subscription */
FB.Event.subscribe('auth.statusChange',
function(response) {
alert('user status is changed in:' + response.status);
});
/* auth response change event subscription */
FB.Event.subscribe('auth.authResponseChange',
function(response) {
alert('user auth response is changed in:' + response.status);
});
}
只有edge.create事件会在按下赞按钮时触发相关回调,但在用户登录时不会发生任何事情。
如果登录的用户状态为connected(他在 facebook 设置中接受了我的应用程序)或not_authorized,情况不会改变。
我尝试为 JsFiddle 提供交互式代码,但 Facebook js sdk 不能那样工作。
在此先感谢您的帮助