Dieses Dokument führt dich durch die Schritte zur Implementierung von Facebook Login mit dem Facebook-SDK für JavaScript auf deiner Webseite.
Du benötigst Folgendes:
Das folgende Codebeispiel zeigt, wie du deiner Webseite das Facebook-SDK für Javascript hinzufügst und das SDK initialisierst. Wenn du bei Facebook angemeldet bist, werden dein Name und deine E-Mail-Adresse angezeigt. Wenn du nicht bei Facebook angemeldet bist, wird automatisch das Login-Dialog-Pop-up angezeigt.
Für die public_profile-Berechtigung , mit der du öffentlich zugängliche Informationen wie Name und Profilbild abrufen kannst, und die email-Berechtigung ist kein App Review erforderlich. Sie werden automatisch allen Apps gewährt, die Facebook Login nutzen.
<!DOCTYPE html> <html lang="en"> <head></head> <body> <h2>Add Facebook Login to your webpage</h2> <!-- Set the element id for the JSON response --> <p id="profile"></p> <script> <!-- Add the Facebook SDK for Javascript --> (function(d, s, id){ var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) {return;} js = d.createElement(s); js.id = id; js.src = "https://connect.facebook.net/en_US/sdk.js"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk') ); window.fbAsyncInit = function() { <!-- Initialize the SDK with your app and the Graph API version for your app --> FB.init({ appId : '{your-facebook-app-id}', xfbml : true, version : '{the-graph-api-version-for-your-app}' }); <!-- If you are logged in, automatically get your name and email adress, your public profile information --> FB.login(function(response) { if (response.authResponse) { console.log('Welcome! Fetching your information.... '); FB.api('/me', {fields: 'name, email'}, function(response) { document.getElementById("profile").innerHTML = "Good to see you, " + response.name + ". i see your email address is " + response.email }); } else { <!-- If you are not logged in, the login dialog will open for you to login asking for permission to get your public profile and email --> console.log('User cancelled login or did not fully authorize.'); } }); }; </script> </body> </html>
Wähle im App-Dashboard deine App aus und navigiere zu Produkt hinzufügen. Klicke auf der Karte Facebook Login auf Einrichten. Wähle im linken Navigationspanel Einstellungen und gib unter Client-OAuth-Einstellungen deine Umleitungs-URL in das Feld Gültige OAuth Redirect URIs ein, um dich erfolgreich zu authentifizieren.
Stelle den Schalter bei Login mit dem JavaScript-SDK auf „Ja“ und trage in die Liste Für das JavaScript-SDK zugelassene Domains die Domain deiner Seite ein, auf der das SDK läuft, um anzugeben, dass du das JavaScript-SDK zur Anmeldung verwendest. So wird gewährleistet, dass Zugriffsschlüssel nur bei Rückrufen von autorisierten Domains ausgegeben werden. Das Facebook-SDK für Javascript unterstützt ausschließlich HTTPS-Seiten zur Authentifizierung.
Beim Laden deiner Webseite solltest du als Erstes herausfinden, ob eine Person über Facebook Login bereits bei deiner Webseite angemeldet ist. Mit dem Aufruf von FB.getLoginStatus
wird ein Aufruf von Facebook ausgelöst, um den Login-Status zu erfahren. Facebook ruft dann deine Rückruffunktion mit den Ergebnissen auf.
FB.getLoginStatus(function(response) { statusChangeCallback(response); });
{ status: 'connected', authResponse: { accessToken: '{access-token}', expiresIn:'{unix-timestamp}', reauthorize_required_in:'{seconds-until-token-expires}', signedRequest:'{signed-parameter}', userID:'{user-id}' } }
status
gibt den Login-Status der Person an, die die Webseite verwendet. Der status
kann einer der folgenden sein:
Status -Typ | Beschreibung |
---|---|
| Die Person ist bei Facebook angemeldet und hat sich bei deiner Webseite angemeldet. |
| Die Person ist bei Facebook angemeldet, hat sich aber nicht bei deiner Webseite angemeldet. |
| Die Person ist nicht bei Facebook angemeldet. Du weißt also nicht, ob sie bei deiner Webseite angemeldet ist. Möglicherweise wurde auch zuvor FB.logout() aufgerufen und die Verbindung zu Facebook ist deshalb nicht möglich. |
Ist der Status connected
, sind die folgenden authResponse
-Parameter in der Antwort enthalten:
authResponse -Parameter | Wert |
---|---|
| Ein Zugriffsschlüssel für den Nutzer der Webseite. |
| Ein UNIX-Zeitstempel bei Ablauf des Token. Bei Ablauf des Token muss sich der Nutzer erneut anmelden. |
| Die verbleibende Zeit (in Sekunden) bis zum Ablauf der Anmeldung und der Notwendigkeit einer erneuten Anmeldung. |
| Ein signierter Parameter, der Informationen zum Nutzer deiner Webseite enthält. |
| Die ID des Nutzers deiner Webseite. |
Das JavaScript-SDK erkennt den Anmeldestatus automatisch. Du musst hier also nicht mehr auf irgendeine Weise tätig werden.
Wenn ein Nutzer deine Webseite aufruft, aber nicht bei der Webseite oder bei Facebook angemeldet ist, kannst ihn über den Login-Dialog zur Anmeldung auffordern. Wenn die Nutzer nicht bei Facebook angemeldet sind, werden sie zuerst zur Anmeldung bei Facebook aufgefordert und dann zur Anmeldung bei deiner Webseite.
Es gibt zwei Möglichkeiten, eine Person anzumelden:
Verwende zur Nutzung des Login-Buttons unseren Plug-in-Konfigurator zur Anpassung des Login-Buttons und rufe den Code ab.
Rufe zur Verwendung deines eigenen Buttons den Login-Dialog mit einem Aufruf von FB.login()
auf.
FB.login(function(response){ // handle the response });
Wenn eine Person auf deinen HTML-Button klickt, wird ein Popup-Fenster mit dem Login-Dialog angezeigt. In diesem Dialog kannst du nach einer Berechtigung für den Zugriff auf die Daten einer Person fragen. Der scope
-Parameter kann zusammen mit dem FB.login()
-Funktionsaufruf übergeben werden. Dieser optionale Parameter ist eine Liste mit Berechtigungen (durch Kommata getrennt), die eine Person bestätigen muss, damit deine Webseite auf deren Daten zugreifen kann. Facebook Login benötigt für externe Nutzer die erweiterte „public_profile“-Berechtigung.
Mit diesem Beispiel wird die Person, die sich anmeldet, gefragt, ob deine Webseite Berechtigung für den Zugriff auf ihr öffentliches Profil und ihre E-Mail-Adresse erhalten kann.
FB.login(function(response) { // handle the response }, {scope: 'public_profile,email'});
Mit der Antwort, entweder auf die Verbindung oder den Abbruch, wird ein authResponse
-Objekt an den Rückruf gesendet, den du festgelegt hast, als du den FB.login()
-Aufruf gestartet hast. Diese Antwort kann innerhalb des FB.login()
erkannt und verarbeitet werden.
FB.login(function(response) { if (response.status === 'connected') { // Logged into your webpage and Facebook. } else { // The person is not logged into your webpage or we are unable to tell. } });
Melde Nutzer von deiner Webseite ab, indem du die JavaScript-SDK-Funktion FB.logout()
einem Button oder einem Link hinzufügst.
FB.logout(function(response) { // Person is now logged out });
Hinweis: Mit dieser Funktion wird der Nutzer möglicherweise auch bei Facebook abgemeldet.
Außerdem werden mit der Abmeldung von deiner Webseite keine Berechtigungen widerrufen, die die Person deiner Webseite im Rahmen der Anmeldung gewährt hat. Der Widerruf von Berechtigungen muss separat erfolgen. Konfiguriere deine Webseite so, dass eine Person, die sich abgemeldet hat, den Login-Dialog nicht sieht, wenn sie sich erneut anmeldet.
Dieser Code wird geladen und initialisiert das JavaScript-SDK in deine HTML-Seite. Ersetze {app-id}
durch deine App-ID und {api-version}
durch die zu verwendende Graph API-Version. Sofern es keinen speziellen Grund zur Verwendung einer älteren Version gibt, solltest du die aktuellste Version angeben. v21.0
.
<!DOCTYPE html> <html> <head> <title>Facebook Login JavaScript Example</title> <meta charset="UTF-8"> </head> <body> <script> function statusChangeCallback(response) { // Called with the results from FB.getLoginStatus(). console.log('statusChangeCallback'); console.log(response); // The current login status of the person. if (response.status === 'connected') { // Logged into your webpage and Facebook. testAPI(); } else { // Not logged into your webpage or we are unable to tell. document.getElementById('status').innerHTML = 'Please log ' + 'into this webpage.'; } } function checkLoginState() { // Called when a person is finished with the Login Button. FB.getLoginStatus(function(response) { // See the onlogin handler statusChangeCallback(response); }); } window.fbAsyncInit = function() { FB.init({ appId : '{app-id}', cookie : true, // Enable cookies to allow the server to access the session. xfbml : true, // Parse social plugins on this webpage. version : '{api-version}' // Use this Graph API version for this call. }); FB.getLoginStatus(function(response) { // Called after the JS SDK has been initialized. statusChangeCallback(response); // Returns the login status. }); }; function testAPI() { // Testing Graph API after login. See statusChangeCallback() for when this call is made. console.log('Welcome! Fetching your information.... '); FB.api('/me', function(response) { console.log('Successful login for: ' + response.name); document.getElementById('status').innerHTML = 'Thanks for logging in, ' + response.name + '!'; }); } </script> <!-- The JS SDK Login Button --> <fb:login-button scope="public_profile,email" onlogin="checkLoginState();"> </fb:login-button> <div id="status"> </div> <!-- Load the JS SDK asynchronously --> <script async defer crossorigin="anonymous" src="https://connect.facebook.net/en_US/sdk.js"></script> </body> </html>