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.
Bitte melde dich für die Erstellung von Apps bei Facebook an oder registriere dich als Entwickler.
buildscript { repositories {}}
: dependencies{}
-Abschnitt hinzu, um die aktuelle Version des Facebook Login-SDK zu verwenden: 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.
FacebookActivity
zu deinem Android-Manifest hinzu. /app/res/values/strings.xml
.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: /app/manifest/AndroidManifest.xml
. meta-data
-Elemente zum application
-Element für deine App-ID und deinen Client Token hinzu: 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>
uses-permission
-Element zum Manifest nach dem application
-Element hinzu: uses-permission
-Element zum Manifest nach dem application
-Element hinzu: 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.
LoginButton
des SDK. Der LoginButton
ist ein UI-Element, das die im LoginManager
verfügbare Funktionalität umfasst. Wenn eine Person auf den Button klickt, wird der Login mit den im LoginManager
festgelegten 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. CallbackManager.Factory.create
aufruft. 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 } });
LoginManager
oder den LoginButton
festlegen. Wenn du den Rückruf mit LoginButton
registrierst, musst du dies nicht mehr über den Login Manager machen. 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 } });
LoginResult
-Parameter über einen neuen AccessToken
und die neuesten gewährten oder abgelehnten Genehmigungen. registerCallback
, damit die Anmeldung erfolgreich verläuft. Aktuelle Änderungen des Zugriffsschlüssels kannst du über die unten beschriebene AccessTokenTracker
-Klasse nachverfolgen. 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.
onActivityResult
an den callbackManager
weiterleiten. 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. 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:queries
in deiner Datei /app/manifest/AndroidManifest.xml
folgenden Code hinzu, um die Änderungen in Android 11 zu unterstützen. 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 } });