0

我正在尝试在我的网页中包含 facebook 登录/注册插件。每当我单击登录或单击注销时,应触发相应的FB.Event.subscribe。但就我而言,登录和注销成功发生。但这些事件都没有被触发。在代码下方找到,

<div id="fb-root"></div>
window.fbAsyncInit = function(){
    FB.init({
        appId   : 'xxxxxxxxxxxxxxxxxxxx',
        status  : true,
        cookie  : true,
        oauth   : true,
        xfbml   : true 
    });

    FB.Event.subscribe('auth.login', function(response) {
        FB.api('/me', function(response) {
        alert('You have successfully logged in, '+response.name+"!");
        });
    });     

    FB.Event.subscribe('auth.logout', function(response) {
        FB.api('/me', function(response) {
            alert('You have successfully logged out, '+response.name+"!");
        });
    });

    FB.getLoginStatus(function(response) {
        if (response.session) {
            alert('Hello');
        }
    });
};

(function() {
    var e = document.createElement('script');
    e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
    document.getElementById('fb-root').appendChild(e);
}());

如果有人能在这里帮助我,那就太好了。提前致谢。

4

1 回答 1

0

这些事件仅在用户状态更改时触发。

例如auth.login,当用户尚未授权您的页面然后给予授权时,就会发生此更改。在这第一次,用户没有您页面的 facebook cookie 值。当他或她授权您的页面时,cookie 值将由 FB JS SDK 写入,您的脚本将感知auth.login更改事件。下次,当您的用户再次回来时,cookie 值应该已经存在,并且该事件不会触发,因为状态没有更改。

auth.login当用户已经授权您的应用程序但清除了 cookie 时,该事件也会触发。在下一次访问中,FB JS SDK 将不得不再次写入 cookie,并且该事件将发生。

我不确定该auth.logout事件,因为我不使用它,但据我所知,它与您的应用程序无关,而是与您用户的 Facebook 帐户的会话状态有关。

我建议您在脚本执行期间监视页面上的 cookie 值更改,以便更好地了解事件何时发生。

于 2012-08-13T15:55:07.447 回答