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 :
email
doivent ê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.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.
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.