2012-04-10 16 views
0

私は自分のウェブサイトでfacebook認証(register + login)を実装しています。すべては私がログインしていても、表示ボタンを除き、正常に動作します。事前に感謝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> 

答えて

0

あなたの現在の実装では、常にログインするユーザーを促します。

ユーザーがアプリケーションにログインしているかどうかを確認し、fb:login-buttonを表示するかどうかを判断するコールバック関数をFB.initに書き込みます。

それはこのようなものになります。

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(); 
     } 
    }); 
}; 
+0

はあなたに感謝しますが、begginingから隠されてFB-ログインボタンが設定されています。なぜそれが表示されているのか分かりません。 –

+0

@ vitor-subs私がこのように構成した理由は、ブラウザがFB.getLoginStatus呼び出しを実行した後にFB.initが完了する可能性を避けるためです。私はhttp://facebook.stackoverflow.com/questions/3548493/how-to-detect-when-facebooks-fb-init-is-completeからコードスニペットを派生させた – Shreeni

関連する問題