Gérer les autorisations dans Facebook Login pour le web

L’un des aspects les plus importants du lancement de la boîte de dialogue Login consiste à déterminer les données auxquelles votre application aura besoin d’accéder. Les exemples ci-dessous utilisent tous le paramètre scope qui indique la manière dont vous demandez l’accès aux données d’une personne. Il s’agit des autorisations.

Les autorisations sont décrites en détail dans notre guide sur les autorisations. Il y a cependant quelques points à retenir lorsqu’il s’agit des autorisations et de la boîte de dialogue Login :

  • Vous demandez les autorisations lorsque la boîte de dialogue est créée. L’ensemble d’autorisations obtenu est lié au token d’accès renvoyé.
  • D’autres plateformes peuvent utiliser d’autres ensembles d’autorisations. Par exemple, sous iOS, vous pouvez demander les emplacements où une personne a été identifiée, alors que cette autorisation n’est pas nécessaire dans la version web de votre application.
  • Vous pouvez ajouter des autorisations plus tard lorsque vous en avez besoin. Il vous suffit alors d’ajouter l’autorisation de votre choix à la liste des autorisations déjà accordées et d’ouvrir à nouveau la boîte de dialogue Login pour que celle-ci demande la nouvelle autorisation.
  • La boîte de dialogue Login permet aux utilisateurs de refuser de partager certaines autorisations avec votre application que vous demandez. Votre application peut gérer ce cas. Consultez la boîte de dialogue d’autorisations pour en savoir plus à ce sujet.
  • Les autorisations qui demandent d’autres informations que celles qui se trouvent dans les champs par défaut et l’autorisation emaildoivent être examinées par Facebook avant d’être accessibles au grand public. Pour en savoir plus, consultez notre documentation Login Review et nos règles de contrôle générales.

Ajouter des autorisations

L’une des meilleures pratiques concernant Facebook Login revient à ne pas demander les autorisations de lecture et de publication en même temps. Ainsi, votre application peut demander plus d’autorisations plus tard, bien après qu’un utilisateur s’est connecté. Pour cela, il vous suffit de lancer la boîte de dialogue Login avec la nouvelle autorisation que vous demandez.

Par exemple, supposons que vous utilisez un bouton Login avec les autorisations suivantes :

<fb:login-button scope="public_profile" onlogin="checkLoginState();">
</fb:login-button>

Si vous appelez /me/permissions pour connaître les autorisations qui ont été accordées après avoir été acceptées par l’utilisateur, le résultat devrait ressembler à ce qui suit :

{"data":
  [
    {
      "permission":"public_profile",
      "status":"granted"
    }
  ]
}

Si vous souhaitez ajouter ultérieurement l’autorisation email, vous pouvez la lancer à nouveau avec la fonction FB.login() comme suit :

FB.login(function(response) {
   console.log(response);
}, {scope: 'email'});

(Cette fonction doit être appelée à partir d’un gestionnaire d’évènements du bouton, faute de quoi elle sera bloquée par les fonctions de blocage des pop-ups.)

Notez que seule la nouvelle autorisation est demandée. Si vous acceptez la nouvelle autorisation, le résultat devrait ressembler à ce qui suit lorsque vous appelez /me/permissions :

{"data":
  [
    {
      "permission":"public_profile",
      "status":"granted"
    },
    {
      "permission":"email",
      "status":"granted"
    }
  ]
}

Notez que la nouvelle autorisation email a été ajoutée à la liste des autorisations acceptées.

Redemander une autorisation refusée

Facebook Login permet aux utilisateurs de refuser de partager certaines autorisations avec votre application. Si une personne refuse le paramètre user_likes (mentions J’aime), vous obtiendrez le résultat ci-dessous si vous appelez /me/permissions pour vérifier les autorisations accordées :

{
  "data":
    [
      {
        "permission":"public_profile",
        "status":"granted"
      },
      {
        "permission":"user_likes",
        "status":"declined"
      }
    ]
}

Notez que l’autorisation user_likes n’a pas été accordée, mais bien refusée.

Vous pouvez demander une nouvelle fois à une personne d’accorder à votre app des autorisations qu’elle a refusées. Avant de refaire une demande, nous vous conseillons tout de même d’ajouter une fenêtre expliquant les raisons pour lesquelles l’utilisateur devrait vous accorder ces autorisations. Cependant, si vous avez suivi la méthode décrite dans la section précédente, la boîte de dialogue Login ne demandera pas cette autorisation.

En effet, à partir du moment où un utilisateur refuse une autorisation, la boîte de dialogue Login ne la redemande plus, à moins que vous ne lui indiquiez de manière explicite que vous souhaitez à nouveau la demander.

Pour ce faire, ajoutez l’indicateur auth_type: rerequest à votre appel FB.login() :

FB.login(
  function(response) {
    console.log(response);
  },
  {
    scope: 'user_likes',
    auth_type: 'rerequest'
  }
);

La boîte de dialogue Login fera alors une nouvelle demande pour l’autorisation refusée. La boîte de dialogue ressemblera beaucoup à celle de la section visant à redemander des autorisations, si ce n’est que vous pourrez redemander une autorisation refusée.