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-buttonを表示するかどうかを決定します。

次のようになります。

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 に答える