2009-02-26 8 views
2

Ich versuche zu tun, was mit facebook connect ziemlich einfach sein soll, aber kein Glück.Auslösen von Funktionen mit Facebook connect

Wenn sich ein Benutzer anmeldet, möchte ich die Benutzerdetails anzeigen (aktualisiert, ohne die Seite neu zu laden), und wenn der Benutzer sich abmeldet, muss ich zu einem angemeldeten Zustand zurückkehren.

Der Code, den ich habe, ist

function update_user_box() 
{ 
    jQuery('span#loggedin').html('<fb:profile-pic uid="loggedinuser" facebook-logo="true"></fb:profile-pic><fb:login-button size="small" onclick="fbLogout()" autologoutlink="true"></fb:login-button>'); 
    jQuery('span#fbLogin, ul#otherLogin').hide(); 
    jQuery('div#popForecast li.otherLogin, ul.showList li.otherLogin').remove(); 
    jQuery('span#logged').text('1'); 
    FB.XFBML.Host.parseDomTree(); 
} 

function fbLogout() 
{ 
    FB.Connect.logout(); 
    jQuery('span#fbLogin').show(); 
    jQuery('span#loggedin').empty(); 
    jQuery('span#logged').text('0'); 
} 
FB.init('c0529b8c11709f2317ae643d854e3866', 'xd_receiver.htm'); 
FB.ensureInit(function(){ 
    FB.Connect.ifUserConnected(update_user_box); 
}); 

ich den Benutzer anmelden kann und aus, aber sonst nichts ändert. Ich kann nicht einmal eine Warnung von meinen Funktionen auslösen.

Aus irgendeinem Grund wird der HTML-Code, den ich benutze, nicht in den Vor-Tags angezeigt, aber beim Neuladen der Seite wird der Benutzer angezeigt (oder nicht wie er sollte), so dass er nicht direkt ausgelöst wird die JavaScript-Funktionen. Aber das Aktualisieren der Seite startet die korrekte Funktion.

Der Fehler, den ich in Firebug bekommen ist

'fbLogout undefined'

, aber klar ist definiert. Spielt es eine Rolle, wo ich es definiere? Momentan befindet sich die gesamte javascript/jquery im Kopf innerhalb von Skript-Tags. Obwohl ich versucht habe, es in die Seite zu verschieben, hatte ich auch kein Glück.

Antwort

3

Es stellte sich heraus, dass ich darüber nachgedacht habe. FB macht eine Menge Arbeit für dich. Ich habe die Funktionen bei den Anmelde- und Abmeldeereignissen aufgerufen, aber mit der Funktion FB.Connect.isUserConnected behält die FB dies für Sie im Auge.

Mein Code ist genau das gleiche, außer 1) i nicht mehr haben Onclick Ereignisse in der fb: Login-Button 2) die FB.Connect.isUserConnected Funktion sieht nun wie folgt

 
FB.Connect.isUserConnected(update_user_box, fbLogout); 
+0

+1 für für Nehmen Sie sich die Zeit, Ihre eigene Antwort zu veröffentlichen. – zombat

+0

ich Sekunde. Eine Antwort zu haben hilft. –