0

我正在我的网站上实施 facebook 身份验证(注册 + 登录)。一切正常,除了显示按钮,即使我已登录。在此先感谢

    <h1 id="welcome">Welcome to my website</h1>
<div id="fb-root"></div>
<span id="fb-login" class="hidden">
<fb:login-button registration-url="http://lemiart.com/register.php"></fb:login-button>
</span>
<script src="https://connect.facebook.net/en_US/all.js#appId=306738122732711&xfbml=1"></script>
<script type="text/javascript">
FB.init({appId: '306738122732711', status: true, cookie: true, xfbml: true});

FB.Event.subscribe('auth.login', function(){
    loggedIn();
});

FB.getLoginStatus(function(response){
    if (response.session){
    // user logged in. Let the auth.login subscription handle this
    } else {
        loggedOut();
    }
});

loggedIn = function() {
    FB.api('/me', function(response) {
    var welcome = document.getElementById('welcome');
    if (welcome) welcome.innerHTML += ' ' + response.id;
    document.getElementById('fb-login').className = "hidden";
    })
}

loggedOut = function() {
    document.getElementById('fb-login').className="";
}
</script>   
4

1 回答 1

0

您当前的实现将始终提示用户登录。您可能需要做的是以下几点:

将回调函数写入 FB.init,然后检查用户是否登录到您的应用程序,然后决定是否要显示 fb:login 按钮。

它看起来像这样:

window.fbAsyncInit = function() {
    FB.init({
        //...
    });

    FB.getLoginStatus(function(response){
        FB.getLoginStatus(function(response){
            if (response.session){
              // user logged in. Let the auth.login subscription handle this
        } else {
            loggedOut();
        }
    });
};
于 2012-04-10T04:10:08.443 回答