Berechtigungen für Android verwalten

Bei der Standardanmeldung erhält deine App Zugriff auf das öffentliche Profil und die E-Mail-Adresse einer Person. Damit du weitere Profilinformationen erhalten oder im Namen einer anderen Person Inhalte auf Facebook posten kannst, musst du die erforderlichen Berechtigungen anfordern:

  • Standardmäßige öffentliche Profilfelder: Bietet Zugriff auf grundlegende Profilinformationen.

  • Leseberechtigungen: Alle anderen Informationen, die eine Person ihrem Facebook-Profil hinzufügt, werden durch andere Leseberechtigungen geschützt.

  • Schreibberechtigungen: Apps benötigen separate Veröffentlichungsberechtigungen, um Inhalte im Namen einer Person zu posten.

So kannst du Berechtigungen in deiner App verwalten:

  • Wenn deine App Facebook-Anfragen für eine Person sendet, sollten die erforderlichen Berechtigungen geprüft und gegebenenfalls angefordert werden.

  • Deine App sollte bei Fehlern wegen fehlender Berechtigungen von Facebook die Berechtigungen anfordern und den Vorgang erneut durchführen.

  • Die Personen, die deine App verwenden, können die Berechtigungen in Facebook widerrufen. Du kannst diese Funktion aber auch in deiner App selbst implementieren.

  • Du kannst es Personen auch erlauben, deiner App grundlegende Anmeldeberechtigungen zu entziehen, indem du eine Funktion zum vollständigen Aufheben der Anmeldung implementierst.

Im Leitfaden für Berechtigungen erfährst du mehr zu den verfügbaren Berechtigungen.

Menschen sind generell skeptisch, wenn es darum geht, jemandem Veröffentlichungsberechtigungen zu erteilen. Du solltest sie deshalb nur anfordern, wenn eine Person etwas mit deiner App posten möchte, und nicht bereits bei der Erstanmeldung.

Weitere Berechtigungen erhalten

Bei der Standardanmeldung erhält deine App Zugriff auf das öffentliche Profil und die E-Mail-Adresse von Nutzern. Damit du weitere Profilinformationen erhalten oder im Namen einer anderen Person Inhalte auf Facebook posten kannst, musst du die erforderlichen Berechtigungen anfordern.

Hier kommt der user_status ins Spiel. Du kannst diese Berechtigungen an den LoginButton-Button oder eine benutzerdefinierte UI für Anmeldung und Berechtigungen weiterleiten.

Ändere in der MainFragment-Klasse den Code in der onCreateView():

...
LoginButton authButton = (LoginButton)view.findViewById(R.id.authButton);
authButton.setFragment(this);
authButton.setReadPermissions(Arrays.asList("user_status"));

return view;
...

Leseberechtigungen erhalten

LoginManager ist eine Einzelinstanz und funktioniert mit dem currentAccessToken des AccessToken. Der currentAccessToken wird nach der erfolgreichen Anmeldung festgelegt. Für zusätzliche Berechtigungen musst du nur die logInWithPermissionName-Methoden aufrufen.

Über die logInWithPermissionName-Methoden wird immer eine UI geöffnet, auf der der Nutzer dazu aufgefordert wird, deiner App weitere Berechtigungen zu erteilen, falls erforderlich. Um weitere Berechtigungen von einer Person zu erhalten, leite diese Anfrage über das Facebook-SDK für Android ein:

LoginManager.getInstance().logInWithReadPermissions(
    fragmentOrActivity,
    Arrays.asList("email"));

Fordere damit weitere Berechtigungen an, die die App noch nicht erhalten hat. Dies kannst du nach der eigentlichen Anmeldung durchführen.

Du kannst viele der Leseberechtigungen anfordern, die in der Berechtigungsreferenz aufgeführt sind.

Erhalten von Veröffentlichungsberechtigungen

Du kannst während der Anmeldung eine beliebige Anzahl an Lese- oder Veröffentlichungsberechtigungen anfordern. Bei Apps, die mehr als vier Berechtigungen anfragen, ist allerdings ein deutlicher Abfall bei der Anzahl abgeschlossener Anmeldungen zu beobachten.

Am 24. April 2018 wurde die Berechtigung pubish_actions entfernt. Einzelheiten hierzu findest du im Änderungsprotokoll zu funktionsgefährdenden Änderungen. Damit die Nutzer deiner App Inhalte auf Facebook teilen können, solltest du stattdessen unsere Produkte zum Teilen verwenden.

Wenn du Veröffentlichungsberechtigungen über publish_actions während der Anmeldung anforderst, wird ein zweiter Schritt bei der Login-UI erforderlich. Während der Anmeldung solltest du also so wenige Leseberechtigungen wie möglich anfordern und alle weiteren Veröffentlichungsberechtigungen erst dann, wenn sie tatsächlich benötigt werden. Unter Optimieren von Berechtigungen findest du Informationen zum Optimieren deiner Berechtigungen.

Veröffentlichungsberechtigungen kannst du in deiner App über den LoginManager anfordern.

LoginManager.getInstance().logInWithPublishPermissions(
    fragmentOrActivity,
    Arrays.asList("publish_actions"));

Damit forderst du Berechtigungen zusätzlich zu den während der Anmeldung erhaltenen Berechtigungen an.

Erneutes Anfordern von Berechtigungen

Nutzer können deiner App nur einen Teil der angeforderten Berechtigungen erteilen, mit Ausnahme von public profile. Die Zugriffsberechtigung darauf wird bereits bei der Anmeldung erteilt.

Um die Liste der Berechtigungen zu erhalten, die mit dem aktuellen Zugriffsschlüssel verbunden sind, rufe Folgendes auf:

AccessToken.getCurrentAccessToken().getPermissions();

Um die Liste der abgelehnten Berechtigungen zu erhalten, rufe Folgendes auf:

AccessToken.getCurrentAccessToken().getDeclinedPermissions();

Deine App sollte auch für den Fall gerüstet sein, dass eine Person deiner App eine der angefragten Berechtigungen verwehrt. Wenn deine App eine der abgelehnten Berechtigungen zur Ausführung benötigt, kannst du diese über den LoginManager erneut wie im Beispiel oben beschrieben anfordern.

Login Review

Wenn du Facebook Login implementierst, kann deine App optional bei Personen Berechtigungen für den Zugriff auf bestimmte Informationen anfordern.

Wenn deine App mehr als die standardmäßigen Felder für das öffentliche Profil und E-Mail anfordert, muss sie vor dem Release erst durch Facebook geprüft werden. Erfahre mehr über den Überprüfungsvorgang und die Anforderungen, um ihn zu bestehen.

Leitfaden zum Login Review