1

在我的网络平台上,我向用户展示了一个 Facebook likebox

单击likebox的like按钮后,我需要知道用户何时登录Facebook 。

我尝试通过对事件auth.statusChangeauth.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 不能那样工作。

在此先感谢您的帮助

4

0 回答 0