Ajouter une connexion Facebook aux applications natives
Vous pouvez permettre à vos utilisateurs de s’authentifier par Facebook de manière native, sans quitter l’application. Cela ne nécessite pas de redirection via un navigateur Web et permet aux applications mobiles de respecter la Politique des développeurs de Facebook, qui exige que les applications mobiles utilisent la trousse SDK Facebook pour Android ou iOS pour l’authentification.
Fonctionnement
Le flux de connexion Facebook natif est le suivant :
Étape 1 : L’application authentifie un utilisateur via la trousse SDK Facebook et acquiert le jeton d’accès.
Étape 2 : L’application utilise ce jeton d’accès pour demander un jeton d’accès aux informations de session Facebook spécial.
Étape 3 : Utilisez la trousse SDK Facebook pour récupérer le profil de l’utilisateur.
Étape 4 : L’application peut ensuite utiliser le jeton d’informations de session Facebook pour s’authentifier avec Auth0.
Prérequis
Avant de configurer la connexion Facebook native via Auth0, vous devez :
Utiliser la trousse SDK Facebook appropriée dans votre application
Allez à Auth0 Dashboard > Applications > Applications et créez une application avec Auth0 (si ce n’est déjà fait).
En bas de la page des paramètres, sélectionnez Afficher les paramètres avancés, puis la vue Paramètres de l’appareil. Sous Connexion sociale native, activez l’option Activer la connexion avec Facebook.
Implémentation
Le processus d’authentification d’un profil utilisateur avec la connexion Facebook native comporte quatre étapes du point de vue de votre application :
Étape 1
L’application authentifie un utilisateur via la trousse SDK Facebook. Elle acquiert un jeton d’accès auprès de Facebook.
Étape 2
L’application utilise ce jeton d’accès pour demander un jeton d’accès aux informations de session Facebook.
Cette demande ressemblera à celle-ci :
GET https://graph.facebook.com/v5.0/oauth/access_token?grant_type=fb_attenuate_token&client_id=457704041391802&fb_exchange_token=<facebook_access_token>
Was this helpful?
Et la réponse :
{
"access_token": "XAAGgR4b...1lHWNCpqrAhcpoAZDZD",
"token_type": "bearer",
"expires_in": 5183924
}
Was this helpful?
Étape 3
L’application doit récupérer le profil utilisateur depuis Facebook en utilisant la trousse SDK Facebook, en émettant une demande similaire à celle-ci :
GET https://graph.facebook.com/v5.0/<facebook user id>?access_token=<facebook access token>&fields=email,name
Was this helpful?
Étape 4
L’application peut ensuite utiliser le jeton d’accès des informations de session et le profil utilisateur Facebook pour s’authentifier avec Auth0 en appelant le point de terminaison /oauth/token
d’Auth0, en utilisant le flux d’échange de jetons avec le type de jeton facebook-session-access-token
. Si tout se passe bien, Auth0 renvoie une réponse normale suite à l’échange, en ajoutant le profil utilisateur. Le profil utilisateur doit être un objet JSON, codé sous forme de chaîne.
POST https://{yourDomain}/oauth/token
grant_type: 'urn:ietf:params:oauth:grant-type:token-exchange'
subject_token_type: 'http://auth0.com/oauth/token-type/facebook-info-session-access-token'
audience: 'your-api'
scope: 'read:appointments openid profile email email_verified'
subject_token: 'XAAGgR4b...1lHWNCpqrUHZAEtUuZAhcpoAZDZD'
client_id: '{yourClientId}'
user_profile: '{"email":"john@example.com", "name":"John Doe"}'
Was this helpful?
Et la réponse d’Auth0 :
{
"access_token": "eyJ0eXA..yXQaPLVXg",
"id_token": "eyJ0.tFE5HPipdOsA",
"scope": "openid profile email read:appointments",
"expires_in": 86400,
"token_type": "Bearer"
}
Was this helpful?
Profil utilisateur et validation d’adresse courriel
Dans l’exemple précédent, vous deviez récupérer le profil utilisateur auprès de Facebook et l’inclure dans l’appel vers /oauth/token
. Pourquoi? Parce que le jeton d’accès de session Facebook ne peut pas être directement utilisé pour récupérer le profil, et le jeton d’accès Facebook ne peut pas être directement envoyé au serveur, à cause des Directives de révision des applications d’Apple. Par conséquent, il doit être récupéré dans le client et envoyé à Auth0 de cette manière.
Étant donné qu’Auth0 ne peut pas garantir que le profil utilisateur sera le même que celui renvoyé par Facebook, il définira le champ email_verified
sur false
.
Déconnexion
Comme l’implémentation de la connexion native n’utilise pas les flux de navigateur standard, les propriétaires des applications doivent veiller à effectuer la déconnexion de manière appropriée. Lorsqu’une application a besoin d’effectuer une déconnexion, elle doit également Révoquer le jeton d’actualisation Auth0.