2012-04-10 11 views
0

Ich implementiere Facebook-Authentifizierung (Registrierung + Login) auf meiner Website. Alles funktioniert gut, mit Ausnahme der Taste zeigt, selbst wenn ich angemeldet bin. Vielen Dank im Vorausfacebook Login Button

<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> 

Antwort

0

Ihre aktuellen Implementierung wird immer den Benutzer auffordern, sich einzuloggen. Was Sie vielleicht tun müssen, ist folgendes:

schreiben Sie eine Callback-Funktion zu FB.init, die dann prüft, ob der Benutzer in Ihrer Anwendung angemeldet ist und dann entscheiden, ob Sie die fb: Login-Schaltfläche anzeigen möchten.

Es würde wie folgt aussehen:

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

danke, aber die fb-Login-Button eingestellt wird, wie aus dem beggining versteckt. Ich verstehe nicht, warum es zeigt. –

+0

@ vitor-subs Der Grund, warum ich es so strukturiert habe, ist die Möglichkeit zu vermeiden, dass FB.init abgeschlossen wird, nachdem der Browser den FB.getLoginStatus-Aufruf bereits ausgeführt hat. Ich habe mein Code-Snippet von http://facebook.stackoverflow.com/questions/3548493/how-to-detect-when-facebooks-fb-init-is-complete abgeleitet – Shreeni