7

Kann mir jemand sagen, wie genau die FB API funktioniert. Es scheint eine grundlegende Frage zu sein, aber ich bin wirklich verwirrt.Facebook API Wie heißt Onlogin

Frage: Ich habe onlogin(). Wenn ich auf die Login-Schaltfläche klicke, erwarte ich, dass diese Funktion aufgerufen wird. Aber im Code habe ich eingefügt: Ich sehe, dass Alert-Test zuerst gedruckt wird und dann die FB.api aufgerufen wird.

So, es sieht aus wie onlogin zuerst aufgerufen wird, dann die FB API ... gibt es eine Möglichkeit, ich kann diese Funktion nur einmal aufrufen.

Mein Hauptproblem ist die Funktion sollte nur einmal aufgerufen werden .... aber es wird zweimal aufgerufen.

+0

'click' und' onclick' im Code Sie erscheinen nicht in Ihrer Frage haben, was es schwierig macht, das Problem zu beheben. – Trott

+0

Danke für das Zeigen. Ich habe die Frage bearbeitet. –

Antwort

8
<body> 
     <div id="fb-root"></div> 
<script> 

     window.fbAsyncInit = function() { 
      FB.init({appId: 'XXX', status: true, cookie: true, xfbml: true}); 

     }; 
     (function() { 
     var e = document.createElement('script'); e.async = true; 
     e.src = document.location.protocol + 
      '//connect.facebook.net/en_US/all.js'; 
     document.getElementById('fb-root').appendChild(e); 
     }()); 

    function fetchUserDetail() 
    { 
     FB.api('/me', function(response) { 
       alert("Name: "+ response.name + "\nFirst name: "+ response.first_name + "ID: "+response.id); 
      }); 
    } 

    function checkFacebookLogin() 
    { 
     FB.getLoginStatus(function(response) { 
      if (response.status === 'connected') { 
      fetchUserDetail(); 
      } 
      else 
      { 
      initiateFBLogin(); 
      } 
     }); 
    } 

    function initiateFBLogin() 
    { 
     FB.login(function(response) { 
      fetchUserDetail(); 
     }); 
    } 
    </script> 


<input type="button" value="Sign in using Facebook" onclick="checkFacebookLogin();"/> 


</body> 
+0

Danke Purusottam, das hat mein Problem gelöst, es druckt nicht 2 mal. Aber ich sehe keinen FB farbigen Knopf ... Im Allgemeinen sehen die Leute das bläuliche Fenster gern. weil du "button: type" verwendest Ich vermisse das Aussehen und Gefühl ist das möglich mit "fb: login-button" –

+0

benutze CSS um das selbe Aussehen zu haben wie die FB Taste. Wenn das dein Problem gelöst hat dann markiere es als antwort so, dass es in Zukunft anderen helfen kann –

+0

Es gelöst..so heißt es ich kann FB apis nicht direkt verwenden :( –

1

Der Aufruf der FB API ist asynchron. Dies bedeutet, dass der Code nach dem Senden der Anforderung nicht auf die Beendigung der Anforderung wartet. Aus diesem Grund erhalten Sie einen Alert-Test, bevor der API-Aufruf zurückgegeben wird. Alle FB-API-Aufrufe sind asynchron, wenn Sie versuchen, sie synchron zu machen, wird Ihr Browser hängen.

Dank Kaushik

+0

Danke Kaushik. Wie kann ich sicherstellen, dass es nur einmal aufgerufen wird ... Ich verstehe, dass, wie Sie gesagt haben, wenn ich es synchron mache, es hängt ... wie man herumkommt? Auch warum wird Alert-Test zweimal aufgerufen. Da es asynchron ist, sollte es nur einmal ohne Warten auf die FB-Antwort anrufen? Bitte sagen Sie mir auch, wie man es nur einmal aufrufen kann –

+0

Hallo Pavan ... warum Sie FB.api verwenden, um zu überprüfen, ob der Benutzer eingeloggt ist oder nicht. Verwenden Sie einfach die Funktion FB.login. Zweitens, warum benutzt du den fb: login-button? Wenn Sie dies verwenden, dann vermasseln Sie wahrscheinlich FB Social Plugin. Mein Vorschlag ist einfach HTML-Button zu erstellen und dann onclick ruft Ihre Funktion auf. Weitere Informationen finden Sie unter diesem Link. https://developers.facebook.com/docs/reference/javascript/FB.login/ –

+0

Vielen Dank für die Antwort. Ich schaue mir 2 Dinge an, die der Benutzer anmeldet und dann möchte ich die Informationen des Benutzers abrufen, der sich in meiner Datenbank angemeldet hat. Also ich benutze FB.api. Ja, es ist wirklich mit dem Knopf durcheinander. Kannst du mir bitte sagen, was du meinst und wie du das verwendest ... alles was ich brauche ist die Validierung sollte von der FB gemacht werden und ich möchte diese Benutzerinformationen protokolliert bekommen .... Wie ich im obigen Beispiel gesagt habe, wird es ausgeführt zweimal ... infact die Warnung der Benutzerinformationen wird auch zweimal gedruckt..Ich verstand immer noch nicht die Begründung –