Erste Schritte mit dem Facebook-SDK für Android

Diese Dokumentation beschreibt, wie du damit beginnst, deine Android-App mit dem Facebook-SDK für Android mit Facebook zu integrieren. Die aktuelle Version des Facebook-SDK für Android ist Version 12.0.0. Dafür ist die Android-API 15 erforderlich. Weitere Informationen zu Versionen und Funktionen findest du unter Facebook-SDK für Android.

Wenn du das Facebook-SDK nutzt, werden einige Events in deiner App automatisch für Facebook Analytics protokolliert und erfasst, es sei denn, du deaktivierst die automatische App Event-Protokollierung. Detaillierte Informationen dazu, welche Daten erfasst werden und wie du die automatische App Event-Protokollierung deaktivierst, findest du im Abschnitt Automatische App Event-Protokollierung.

Du kannst folgendermaßen deine App so konfigurieren, dass sie das Facebook-SDK für Android verwendet:

  • Über den Schnellstart
  • Durch Einrichten deines Projekts mit dem Facebook-SDK für Android

Schnellstart

Um eine Facebook-App-ID zu erhalten, konfiguriere die Einstellungen deiner App und importiere das Facebook-SDK für Android. Klicke dann auf den unten aufgeführten Button und befolge die Anweisungen.

Schnellstart für Android

Informationen zur Werbe-ID-Berechtigung

Jeder von dir mit dem Facebook-SDK für Android erstellte App wird ab Version 13.0.0 eine Werbe-ID-Berechtigung hinzugefügt. Weitere Informationen findest du unter Werbe-ID – Play Console-Hilfe.

Es kann vorkommen, dass du das Hinzufügen der Werbe-ID-Berechtigung zu deiner App deaktivieren möchtest. Wenn die Kund*innen deiner App beispielsweise Kinder und Familien sind, ist die Werbe-ID-Berechtigung möglicherweise nicht relevant. Um die Werbe-ID-Berechtigung für deine App zu deaktivieren, folge den Anweisungen weiter unten in dieser Dokumentation.

Einrichtung von Android Studio

Projekt erstellen

Um das Facebook-SDK in einem Android Studio-Projekt zu verwenden, musst du das SDK als Build-Abhängigkeit hinzufügen und das SDK importieren.

  1. Gehe zu Android Studio | New Project | Minimum SDK.

  2. Wähle API 15: Android 4.0.3 (IceCreamSandwich) oder höher aus und erstelle dein neues Projekt.

  3. Öffne die Datei Gradle Scripts | build.gradle (Project: <your_project>) und füge Folgendes hinzu:

    mavenCentral()
    
  4. Speichere und schließe die Datei build.gradle (Project: <your_project>).

  5. Öffne die Datei Gradle Scripts | build.gradle (Module: app) und füge Folgendes zum Abschnitt dependencies hinzu:

    implementation 'com.facebook.android:facebook-android-sdk:latest.release'
    

  6. Speichere und schließe die Datei build.gradle (Module: app).

  7. Erstelle dein Projekt. Jetzt kannst du com.facebook.FacebookSdk in deine App importieren.

Manifest aktualisieren

Füge deine App-ID und deinen Client Token zur String-Datei deines Projekts hinzu und aktualisiere die Manifestdatei. Führe folgende Schritte aus:

  1. Öffne die Datei /app/res/values/strings.xml in deinem App-Projekt.

  2. Füge string-Elemente mit den Namen facebook_app_id 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="facebook_client_token">56789</string>
  3. Öffne die Datei /app/manifests/AndroidManifest.xml in deinem App-Projekt.

  4. Füge meta-data-Elemente zum application-Element für deine App-ID und deinen Client Token hinzu:

    <application android:label="&#064;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 ein uses-permission-Element zum Manifest nach dem application-Element hinzu:

    <uses-permission android:name="android.permission.INTERNET"/>
  6. (Optional) Um die Werbe-ID-Berechtigung 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"/>
  7. Erstelle dein Projekt.

Teilen aktivieren

Wenn du Links, Bilder oder Videos aus deiner App teilst, deklarierst du die FacebookContentProvider-Befugnis im Manifest. Führe folgende Schritte aus:

  1. Öffne die Datei /app/manifests/AndroidManifest.xml in deinem App-Projekt.

  2. Füge dem Manifest ein provider-Element für die Befugnis FacebookContentProvider hinzu. Hänge deine App-ID an das Ende des authorities-Werts an. Beispiel: Wenn deine App-ID 1234 lautet, sieht die Deklaration wie folgt aus:

    <provider android:authorities="com.facebook.app.FacebookContentProvider1234"
        android:name="com.facebook.FacebookContentProvider"
        android:exported="true" />
    
  3. Erstelle dein Projekt.

Ausführen von Beispiel-Apps

Die folgenden Beispiele sind im Facebook-SDK für Android enthalten:

  • HelloFacebookSample: Demonstriert den Profilzugriff, Status-Updates und das Hochladen von Fotos.

Du kannst mit Beispielen experimentieren, indem du das Facebook-SDK in ein Android Studio-Projekt importierst. Die Beispiele sind projektabhängig und nicht abhängig von einem zentralen Repository über Maven Central oder jCenter. So spiegeln die Beispiele Änderungen wider, wenn eine lokale Kopie des SDK aktualisiert wird.

Um Beispiel-Apps schnell auszuführen, kannst du Key-Hashes für deine Entwicklungsumgebungen erstellen. Füge diese deinem Facebook-Entwicklungsprofil für die Beispiel-Apps hinzu. Keytool für die Erstellung der Key-Hashes ist im Java SE Development Kit (JDK) enthalten, das du im Rahmen des Setups deiner Entwicklungsumgebung installiert hast. OpenSSL ist unter OpenSSL zum Download verfügbar.

Führe unter OS X Folgendes aus:

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

Unter Windows benötigst du Folgendes:

Führe folgenden Befehl in einer Eingabeaufforderung im Java-SDK-Ordner aus. Dadurch wird ein 28-stelliger String erstellt.

keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl
base64

Gehe zur Facebook-Entwicklungsseite. Melde dich bei Facebook an und gehe über das Menü oben rechts zu Entwicklereinstellungen:

Wähle in den Entwicklungseinstellungen die Option Beispiel-App im Menü aus, füge den Key-Hash deinem Profil hinzu und speichere ihn:

Du kannst mehrere Key-Hashes hinzufügen, wenn du Apps mit mehreren Geräten entwickelst.

Jetzt kannst du alle Beispiele kompilieren und ausführen, einschließlich derer, die Facebook Login verwenden.

Erstellen von Key-Hashes für die Entwicklung

Facebook nutzt den Key-Hash, um Interaktionen zwischen deiner App und der Facebook-App zu authentifizieren. Wenn du Apps ausführst, die Facebook Login verwenden, musst du deinen Android-Entwicklungs-Key-Hash deinem Facebook-Entwicklungsprofil hinzufügen.

Für die zu veröffentlichende Version deiner App musst du außerdem einen Release Key-Hash erstellen und festlegen.

Mit OS X oder Windows kannst du einen Key-Hash erhalten, indem du ihn erstellst oder den von Settings.getApplicationSignature(Context) zurückgegebenen Wert verwendest. Eine Anleitung dazu findest du unter Ausführen von Beispiel-Apps.

Erstellen eines Release Key-Hash

Um den Austausch von Daten zwischen deiner App und Facebook zu authentifizieren, musst du einen Release Key-Hash erstellen und diesen den Android-Einstellungen in deiner Facebook-App-ID hinzufügen. Andernfalls funktioniert die Facebook-Integration möglicherweise nicht ordnungsgemäß, wenn du deine App im Store veröffentlichst.

In einem früheren Schritt solltest du deine Facebook-Entwicklungseinstellungen mit den Key-Hashes für deine Entwicklungsumgebungen aktualisiert haben.

Beim Veröffentlichen der App wird diese normalerweise mit einer anderen Signatur als der für die Entwicklungsumgebung signiert. Deshalb musst du unbedingt einen Release Key-Hash erstellen und den Android-Einstellungen für die Facebook-App-ID hinzufügen.

Um einen Hash des Release Keys zu erstellen, führe den folgenden Befehl unter Mac oder Windows aus und ersetze deinen Release Key-Alias und den Pfad zu deinem Keystore:

Führe unter Mac OS Folgendes aus:

keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64

Unter Windows benötigst du Folgendes:

Führe folgenden Befehl in einer Eingabeaufforderung im Java-SDK-Ordner aus:

keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | PATH_TO_OPENSSL_LIBRARY\bin\openssl sha1 -binary | PATH_TO_OPENSSL_LIBRARY\bin\openssl base64

Achte darauf, das Passwort zu verwenden, das du bei der Erstellung des Release Keys festgelegt hast.

Dieser Befehl sollte einen 28-stelligen String erstellen. Kopiere diesen Release Key-Hash und füge ihn in die Android-Einstellungen deiner Facebook-App-ID ein.

Stelle außerdem sicher, dass die Android-Einstellungen deiner Facebook-App-ID auch den richtigen Paketnamen und die richtige Hauptaktivitätsklasse für dein Android-Paket enthalten.

Verwenden des Facebook-SDK für Android mit Maven

Du kannst die Maven-Abhängigkeit mit der neuesten verfügbaren Version des Facebook-SDK für Android deklarieren.

<dependency>
  <groupId>com.facebook.android</groupId>
  <artifactId>facebook-android-sdk</artifactId>
  <version>PUT_LATEST_VERSION_HERE</version>
</dependency> 

Problembehebung bei Beispiel-Apps

Wenn Probleme beim Ausführen einer Beispiel-App auftreten, kann dies mit dem Key-Hash in Zusammenhang stehen. Möglicherweise tritt eines der folgenden Szenarien auf:

  • Ein nativer Login-Dialog wird angezeigt. Nach dem Akzeptieren der Berechtigungen bist du aber noch immer abgemeldet. Das Logcat enthält außerdem eine Exception:
12-20 10:23:24.507: W/fb4a:fb:OrcaServiceQueue(504):
com.facebook.orca.protocol.base.ApiException: remote_app_id does not match stored id
  • Ein nicht nativer Login-Dialog wird mit einer Fehlermeldung angezeigt:  „App is Misconfigured for facebook login ...“.

Prüfe deinen Key-Hash und stelle sicher, dass du den richtigen verwendest. I

Du kannst den Beispielcode auch manuell ändern, um den richtigen Key-Hash zu verwenden. Nimm z. B. in der HelloFacebookSampleActivity-Klasse eine vorübergehende Änderung an onCreate() vor:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    
    // Add code to print out the key hash
    try {
        PackageInfo info = getPackageManager().getPackageInfo(
                "com.facebook.samples.hellofacebook", 
                PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
            }
    } catch (NameNotFoundException e) {
        
    } catch (NoSuchAlgorithmException e) {
        
    }
    
    ...

Speichere die Änderungen und führe das Beispiel erneut aus. Suche in der Logcat-Ausgabe nach einer Meldung wie der Folgenden:

12-20 10:47:37.747: D/KeyHash:(936): 478uEnKQV+fMQT8Dy4AKvHkYibo=

Speichere den Key-Hash in deinem Entwicklungsprofil. Führe die Beispiele erneut aus und stelle sicher, dass du dich erfolgreich anmelden kannst.