Gestion des autorisations pour Android

Au cours du processus de connexion de base, votre app se voit accorder l’accès au profil public et à l’adresse e-mail d’un utilisateur. Si vous souhaitez accéder à d’autres informations de profil ou publier du contenu sur Facebook au nom d’un utilisateur, vous devez demander les autorisations requises :

  • Champs Profil public par défaut : accédez aux informations générales sur un profil.

  • Autorisations de lecture : toutes les autres informations qu’un utilisateur ajoute à son profil Facebook sont protégées par d’autres autorisations de lecture.

  • Autorisations d’écriture : les apps doivent obtenir des autorisations de publication distinctes pour publier du contenu pour le compte d’un utilisateur.

Voici les différentes façons de gérer les autorisations dans votre app :

  • Lorsque votre app envoie des demandes Facebook pour un utilisateur, elle doit vérifier les autorisations requises et les demander si nécessaire.

  • Votre app doit gérer les erreurs d’autorisations manquantes provenant de Facebook en demandant des autorisations et en réessayant.

  • Les utilisateurs de votre app peuvent révoquer des autorisations sur Facebook, mais vous pouvez également intégrer cette fonctionnalité à votre app.

  • Vous pouvez également permettre aux utilisateurs de supprimer des privilèges de connexion de base préalablement accordés à votre app grâce à l’implémentation d’un mécanisme servant à révoquer entièrement la connexion.

Consultez le guide sur les autorisations pour en apprendre davantage sur les différentes autorisations disponibles.

Les utilisateurs n’accordent pas facilement d’autorisations de publication. Par conséquent, nous vous conseillons de les demander uniquement lorsqu’un utilisateur souhaite publier du contenu depuis votre app et non lors de la première connexion.

Obtenir des autorisations supplémentaires

Au cours du processus de connexion de base, votre app se voit accorder l’accès au profil public et à l’adresse e-mail d’un utilisateur. Si vous souhaitez accéder à d’autres informations de profil ou publier du contenu sur Facebook au nom d’un utilisateur, vous devez demander les autorisations requises.

Prenons l’exemple de user_status. Vous pouvez transmettre ces autorisations au bouton LoginButton ou à une interface personnalisée pour la connexion et les autorisations.

Dans la classe MainFragment, modifiez le code dans onCreateView() :

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

return view;
...

Obtenir des autorisations de lecture

LoginManager est une instance singleton et fonctionne avec la valeur currentAccessToken d’AccessToken. Une fois la connexion établie, currentAccessToken est défini. Pour demander des autorisations supplémentaires, appelez simplement les méthodes logInWithPermissionName.

Les méthodes logInWithPermissionName ouvrent toujours une interface d’utilisation et invitent l’utilisateur à accorder des autorisations supplémentaires, le cas échéant. Pour obtenir des autorisations supplémentaires d’un utilisateur ou d’une utilisatrice, envoyez cette demande avec le SDK Facebook pour Android :

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

Utilisez-la pour demander des autorisations autres que celles ayant déjà été accordées à l’application. Vous pouvez l’utiliser après la première connexion.

Vous pouvez demander un grand nombre des autorisations de lecture figurant dans Référence relative aux autorisations.

Obtenir des autorisations de publication

Vous pouvez demander autant d’autorisations de lecture que vous souhaitez ou des autorisations de publication au cours du processus de connexion. Les apps demandant plus de quatre autorisations enregistrent une baisse considérable du nombre de personnes qui terminent le processus de connexion.

L’autorisation pubish_actions a été abandonnée depuis le 24 avril 2018. Pour en savoir plus, consultez le Changelog des modifications importantes. Nous vous encourageons à utiliser nos produits Partage pour fournir un moyen de partager du contenu sur Facebook aux utilisateurs de votre app.

Demander des autorisations de publication avec publish_actions au cours du processus de connexion entraîne la création d’une seconde étape dans l’interface de connexion. Par conséquent, nous vous conseillons de demander les autorisations de lecture les plus importantes au cours du processus de connexion, et de demander les autorisations supplémentaires ou celles de publication plus tard, lorsqu’un utilisateur en a réellement besoin. Pour optimiser vos demandes d’autorisations, consultez la section Optimisation des autorisations.

Pour demander des autorisations de publication dans votre application, vous pouvez utiliser le LoginManager.

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

Cette opération permet de demander des autorisations en plus de celles ayant déjà été accordées à l’application au cours du processus de connexion.

Demander à nouveau des autorisations

Les utilisateurs peuvent n’accorder qu’une partie des autorisations que vous demandez, à l’exception de l’autorisation public profile, qui est accordée lors du processus de connexion.

Pour obtenir la liste des autorisations associées au token d’accès actuel, appelez :

AccessToken.getCurrentAccessToken().getPermissions();

Pour obtenir la liste des autorisations refusées, appelez :

AccessToken.getCurrentAccessToken().getDeclinedPermissions();

Votre application doit gérer les cas où elle se voit refuser une des autorisations dont vous avez fait la demande. Si votre app a besoin de l’une des autorisations refusées pour fonctionner correctement, vous pouvez la demander à nouveau par l’intermédiaire du LoginManager, comme indiqué dans les exemples ci-dessus.

Login Review

Lorsque vous implémentez Facebook Login, votre app peut éventuellement demander aux utilisateurs l’autorisation d’accéder à un sous-ensemble de leurs données.

Si votre app demande à accéder à des données autres que les champs des profils publics par défaut et e-mail, Facebook doit examiner votre app avant que vous la publiiez. Apprenez-en davantage sur le processus de certification et les critères de certification.

Guide du processus Login Review