Ab dem 5. Oktober 2021 wird Facebook Login keine eingebetteten Android-Browser (WebViews) zur Authentifizierung von Nutzer*innen mehr unterstützen.

Hintergrundinformationen zu dieser Umstellung findest du im Blogpost Unterstützung für Facebook Login-Authentifizierung auf in Android eingebetteten Browsern wird eingestellt.

Informationen über die Einstellung von WebViews und die Verwendung von benutzerdefinierten Registerkarten findest du unter Unterstützung von Android WebViews wird eingestellt.

Facebook Login für Android – Schnellstart

Mit dem Facebook-SDK für Android können sich Nutzer*innen über Facebook Login bei deiner App anmelden. Wenn Personen sich über Facebook bei deiner App anmelden, können sie deiner App Berechtigungen erteilen, damit du Informationen abrufen oder in ihrem Namen Handlungen auf Facebook durchführen kannst.

Ein Beispielprojekt, in dem dargestellt wird, wie du Facebook Login in eine Android-App integrierst, findest du im FBLoginSample auf GitHub.

Befolge die nachstehenden Anweisungen, um Facebook Login zu deiner App hinzuzufügen.

1. Anmeldung

Bitte melde dich für die Erstellung von Apps bei Facebook an oder registriere dich als Entwickler.

2. Lade die Facebook-App herunter

Lade die Facebook-App über den unten stehenden Button herunter.

3. Integriere das Facebook-SDK

Das Facebook Login-SDK für Android ist eine Komponente des Facebook-SDK für Android. Damit du das Facebook Login-SDK in deinem Projekt verwenden kannst, richtest du in Maven eine Abhängigkeit ein oder lade es herunter. Verwende zur Unterstützung der Änderungen in Android 11 die SDK-Version 8.1 oder höher.

Verwenden von Maven

  1. Öffne in deinem Projekt your_app > Gradle Scripts > build.gradle (Project) und stelle sicher, dass das folgende Repository aufgeführt ist unter buildscript { repositories {}}:
    mavenCentral() 
    
  2. Öffne in deinem Projekt your_app > Gradle Scripts > build.gradle (Module: app) und füge das folgende Implementierungs-Statement zum dependencies{}-Abschnitt hinzu, um die aktuelle Version des Facebook Login-SDK zu verwenden:
     implementation 'com.facebook.android:facebook-login:latest.release'
    
  3. Erstelle dein Projekt.

4. Bearbeite deine Ressourcen und dein Manifest

Wenn du Version 5.15 oder höher des Facebook-SDK für Android verwendest, musst du keinen Aktivitäts- oder Absichtsfilter für benutzerdefinierte Chrome-Tabs hinzufügen. Diese Funktion ist im SDK enthalten.

Nachdem du Facebook Login integriert hast, werden App-Events automatisch für den Events Manager protokolliert und erfasst, es sei denn, du deaktivierst die automatische Protokollierung von App-Events. Detaillierte Informationen dazu, welche Daten erfasst werden und wie du die automatische Protokollierung von App-Events deaktivierst, findest du im Abschnitt Automatische Protokollierung von App-Events.

Erstelle Strings für deine Facebook-App-ID und zur Aktivierung von benutzerdefinierten Chrome-Tabs. Füge außerdem die FacebookActivity zu deinem Android-Manifest hinzu.
  1. Öffne die Datei /app/res/values/strings.xml.
  2. Füge string-Elemente mit den Namen facebook_app_id, fb_login_protocol_scheme und facebook_client_token hinzu, und lege für die Werte deine App-ID und deinen Client Token fest. Wenn deine App-ID zum Beispiel 1234 und dein Client Token 56789 ist, sieht dein Code folgendermaßen aus:
    <string name="facebook_app_id">1234</string>
    <string name="fb_login_protocol_scheme">fb1234</string>
    <string name="facebook_client_token">56789</string>
    
    
  3. Öffne die Datei /app/manifest/AndroidManifest.xml.
  4. Füge meta-data-Elemente zum application-Element für deine App-ID und deinen Client Token hinzu:
    <application android:label="@string/app_name" ...>
        ...
       	<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>
       	<meta-data android:name="com.facebook.sdk.ClientToken" android:value="@string/facebook_client_token"/>
        ...
    </application>
    
  5. Füge eine Aktivität für Facebook und einen Aktivitäts- und Intent-Filter für benutzerdefinierte Chrome-Tabs in deinem application-Element hinzu:
        <activity android:name="com.facebook.FacebookActivity"
            android:configChanges=
                    "keyboard|keyboardHidden|screenLayout|screenSize|orientation"
            android:label="@string/app_name" />
        <activity
            android:name="com.facebook.CustomTabActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="@string/fb_login_protocol_scheme" />
            </intent-filter>
        </activity>
    
  6. Füge ein uses-permission-Element zum Manifest nach dem application-Element hinzu:
    <uses-permission android:name="android.permission.INTERNET"/>
    
    
  7. (Optional) Um die Berechtigung für die Werbeanzeigen-ID abzuwählen, füge ein uses-permission-Element zum Manifest nach dem application-Element hinzu:
    <uses-permission android:name="com.google.android.gms.permission.AD_ID" tools:node="remove"/>
            
  8. Du kannst die automatische Protokollierung von App-Events direkt auf „true“ oder „false“ setzen, indem du die Markierung AutoLogAppEventsEnabled in der Datei AndroidManifest.xml festlegst.

  9. Erstelle dein Projekt.

5. Verknüpfe deinen Paketnamen und die Standardklasse mit deiner App

Du musst dich anmelden, damit du diesen Schritt ausführen kannst.

6. Stelle die Entwicklungs- und Release Key-Hashes für deine App bereit

Du musst dich anmelden, damit du diesen Schritt ausführen kannst.

7. Aktiviere Single Sign-On für deine App

Du musst dich anmelden, damit du diesen Schritt ausführen kannst.

8. Füge den Facebook Login-Button hinzu

Die einfachste Möglichkeit, Facebook Login zu deiner App hinzuzufügen, ist die Verwendung des LoginButton des SDK. Der LoginButton ist ein UI-Element, das die im LoginManagerverfügbare Funktionalität umfasst. Wenn eine Person auf den Button klickt, wird der Login mit den im LoginManagerfestgelegten Berechtigungen durchgeführt. Facebook Login benötigt für externe Nutzer*innen die erweiterte „public_profile“-Berechtigung. Der Button verfolgt den jeweiligen Login-Status und zeigt den entsprechenden Text basierend auf dem Authentifizierungsstatus der Person an.
Um den Facebook Login-Button hinzuzufügen, füge ihn zunächst zu deiner Layout-XML-Datei hinzu:
<com.facebook.login.widget.LoginButton
    android:id="@+id/login_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:layout_marginTop="30dp"
    android:layout_marginBottom="30dp" /> 

9. Registriere einen Rückruf

Erstelle nun einen callbackManager, der die Login-Antworten verarbeitet, indem er CallbackManager.Factory.create aufruft.
callbackManager = CallbackManager.Factory.create();
Wenn du den Button zu einem Fragment hinzufügst, musst du auch deine Aktivität aktualisieren, um das Fragment zu nutzen. Du kannst die Eigenschaften von Login button anpassen und einen Rückruf in deiner onCreate()- oder onCreateView()-Methode registrieren. Zu den änderbaren Eigenschaften gehören LoginBehavior, DefaultAudience, ToolTipPopup.Style und Berechtigungen für den LoginButton. Zum Beispiel:
      
    private static final String EMAIL = "email";
      
    loginButton = (LoginButton) findViewById(R.id.login_button);
    loginButton.setReadPermissions(Arrays.asList(EMAIL));
    // If you are using in a fragment, call loginButton.setFragment(this);    

    // Callback registration
    loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            // App code
        }

        @Override
        public void onCancel() {
            // App code
        }

        @Override
        public void onError(FacebookException exception) {
            // App code
        }
    });
Um auf ein Login-Ergebnis zu reagieren, musst du einen Rückruf über den LoginManager oder den LoginButton festlegen. Wenn du den Rückruf mit LoginButton registrierst, musst du dies nicht mehr über den Login Manager machen.
Du fügst den LoginManager-Rückruf deiner Aktivität oder der onCreate()-Methode deines Fragments hinzu:
    callbackManager = CallbackManager.Factory.create();      
      
    LoginManager.getInstance().registerCallback(callbackManager,
            new FacebookCallback<LoginResult>() {
                @Override
                public void onSuccess(LoginResult loginResult) {
                    // App code
                }

                @Override
                public void onCancel() {
                     // App code
                }

                @Override
                public void onError(FacebookException exception) {
                     // App code   
                }
    });
Wenn der Login erfolgreich abgeschlossen wird, verfügt der LoginResult-Parameter über einen neuen AccessToken und die neuesten gewährten oder abgelehnten Genehmigungen.
Du benötigst keinen registerCallback, damit die Anmeldung erfolgreich verläuft. Aktuelle Änderungen des Zugriffsschlüssels kannst du über die unten beschriebene AccessTokenTracker-Klasse nachverfolgen.
Zum Schluss solltest du in deiner onActivityResult-Methode noch callbackManager.onActivityResult aufrufen, um die Login-Ergebnisse an den LoginManager über den callbackManager weiterzuleiten.

Falls du AndroidX-Aktivitäten oder -Fragmente verwendest, musst du 'onActivityResult' nicht überschreiben.

      @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        callbackManager.onActivityResult(requestCode, resultCode, data);
        super.onActivityResult(requestCode, resultCode, data);
    }
Jede Aktivität und jedes Fragment, die bzw. das du mit der Facebook-SDK-Login- oder -Teilen-Funktion integrierst, sollte onActivityResult an den callbackManager weiterleiten.

10. Prüfe den Login-Status

Bei deiner App kann jeweils immer nur ein Nutzer angemeldet sein. Der LoginManager legt den aktuellen AccessToken und das Profile für diese Person fest. Das Facebook-SDK speichert diese Daten in den freigegebenen Einstellungen und legt sie am Anfang der Sitzung fest. Prüfe AccessToken.getCurrentAccessToken() und Profile.getCurrentProfile(), um zu sehen, ob eine Person bereits angemeldet ist.
Du kannst AccessToken.getCurrentAccessToken mit dem SDK aus dem Cache oder über ein App-Lesezeichen laden, wenn deine App kaltgestartet wird. Du solltest die Gültigkeit bei der onCreate-Methode deiner Activity prüfen:
AccessToken accessToken = AccessToken.getCurrentAccessToken();
boolean isLoggedIn = accessToken != null && !accessToken.isExpired();
  
Dann kannst du später den eigentlichen Login durchführen, wie zum Beispiel über den OnClickListener eines benutzerdefinierten Buttons:
      
LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile"));

11. Aktiviere den Express-Login

Über den Express-Login werden Personen auf allen Geräten und Plattformen bei ihrem Facebook-Konto angemeldet. Wenn sich eine Person auf Android bei deiner App angemeldet hat, kannst du diese über Express-Login bei ihrem Facebook-Konto anmelden, anstatt sie zur Auswahl einer Login-Methode aufzufordern. Damit wird die Erstellung doppelter Konten oder eine fehlgeschlagene Anmeldung vermieden. Füge dem Element queries in deiner Datei /app/manifest/AndroidManifest.xml folgenden Code hinzu, um die Änderungen in Android 11 zu unterstützen.
  
<queries> <package android:name="com.facebook.katana" /> </queries>   
Im folgenden Code siehst du, wie der Express-Login aktiviert wird.
LoginManager.getInstance().retrieveLoginStatus(this, new LoginStatusCallback() { @Override public void onCompleted(AccessToken accessToken) { // User was previously logged in, can log them in directly here. // If this callback is called, a popup notification appears that says // "Logged in as <User Name>" } @Override public void onFailure() { // No access token could be retrieved for the user } @Override public void onError(Exception exception) { // An error occurred } });   

Nächste Schritte

Herzlichen Glückwunsch! Du hast Facebook Login zu deiner Android-App hinzugefügt. Sieh dir auch unsere anderen Dokumentationsseiten an. Dort findest du weiterführende Leitfäden.
Implementiere einen Rückruf zu Datenlöschung, um Anfragen von Personen zu bearbeiten, die die Löschung ihrer Daten aus Facebook angefordert haben.
Verfolge den Zugriffsschlüssel und das Profil deiner Nutzer*innen.
Über Facebook Login kannst du verwalten, auf welche Daten deine App Zugriff hat.
Hast du Probleme bei der Integration von Facebook Login? Sieh dir die Liste der üblichen Probleme an und wie du sie lösen kannst.
Je nachdem, welche Daten du von Personen anforderst, die Facebook Login nutzen, musst du deine App vor der Einführung möglicherweise zu einer Überprüfung einreichen.
Wie du deinen eigenen Anmeldevorgang erstellst, erfährst du unter Anmeldevorgang manuell erstellen.