Avant de commencer
- Configurer le SDK Facebook Login - Installez et configurez le SDK Facebook Login pour iOS. Créez une application Facebook sur developers.facebook.com. Une fois terminé, Facebook Login devrait fonctionner dans votre application.
- Configurer Auth0 pour Facebook Native - Configurez votre application Auth0 pour utiliser Facebook Native Sign In. Consultez Add Facebook Login to Native Apps.
Pour commencer
1
Configurer les autorisations de Facebook Login
Mettez à jour le bouton Facebook Login dans votre
ViewController pour demander les bonnes autorisations.Votre application prend déjà en charge Facebook Login, mais pour obtenir un profil utilisateur plus complet, vous devez demander les autorisations public_profile et email. Vous ajouterez aussi une fonction de rappel du délégué pour lancer le flux d’authentification Auth0.ViewController.swift
La permission
email est facultative — l’utilisateur doit consentir à son partage. L’adresse courriel retournée par Facebook sera marquée comme non vérifiée sur le profil utilisateur Auth0.2
Installer et configurer le SDK Auth0
Ajoutez le SDK Auth0.swift à votre projet et configurez les identifiants de votre application.Ajoutez Auth0.swift avec Swift Package Manager :Faites glisser
- Dans Xcode, accédez à Fichier → Ajouter des dépendances de package…
- Entrez l’URL du package :
https://github.com/auth0/Auth0.swift - Sélectionnez la version la plus récente, puis cliquez sur Ajouter le package
Auth0.plist :Accédez à la section Applications de l’Auth0 Dashboard et sélectionnez l’application pour laquelle vous avez activé Facebook Native Sign In. Copiez les valeurs Domain et Client ID.Créez un nouveau fichier de liste de propriétés nommé Auth0.plist dans votre projet, puis ajoutez ce qui suit :Auth0.plist
Auth0.plist dans Xcode et assurez-vous que Add to target est coché pour la cible de votre application.3
Récupérer le jeton d’accès de la session Facebook
Une fois Facebook Login réussi, récupérez un jeton d’accès de session à partir de l’API Facebook. Auth0 exige ce jeton pour vérifier l’identité de l’utilisateur dans le backend.Faites une requête GET vers le point de terminaison
/oauth/access_token de Facebook à l’aide de la classe GraphRequest :ViewController.swift
Les paramètres de requête requis sont :
grant_type:fb_attenuate_tokenfb_exchange_token: la chaîne du jeton provenant de l’AccessTokenFacebookclient_id: votre ID d’application Facebook (déjà dans votreInfo.plistlors de la configuration du Facebook SDK)
4
Récupérer le profil Facebook de l’utilisateur
Récupérez le profil de l’utilisateur sur Facebook. Auth0 utilise ces données pour créer ou mettre à jour le profil de l’utilisateur dans Auth0.
ViewController.swift
5
Échanger des jetons contre des identifiants Auth0
Utilisez le jeton de session et le profil utilisateur des étapes précédentes pour vous authentifier avec Auth0 et obtenir des jetons Auth0.Appelez
login(facebookSessionAccessToken:profile:audience:scope:) dans le client d’authentification Auth0 :ViewController.swift
En interne, Auth0.swift utilise le type de jeton
http://auth0.com/oauth/token-type/facebook-info-session-access-token pour diriger la requête vers la connexion native Facebook.6
Tout rassembler
Complétez la méthode
performLogin pour enchaîner les trois étapes : récupérer le jeton de session → récupérer le profil utilisateur → procéder à l’échange contre des jetons Auth0.ViewController.swift
VérificationVous devriez maintenant pouvoir vous authentifier avec Facebook en mode natif. Si l’application Facebook est installée sur l’appareil, l’authentification se fait directement dans l’application — sans navigateur.
Dépannage et options avancées
Problèmes courants et solutions
Problèmes courants et solutions
L’échange de jeton échoue avec une erreur d’authentification
Solutions :- Vérifiez que Facebook Native Sign In est activé pour votre application Auth0 dans le Dashboard
- Vérifiez que
FacebookAppIDdansInfo.plistcorrespond à l’App ID dans la console de développement Facebook - Assurez-vous que le fichier
Auth0.plistest ajouté à la bonne cible dans Xcode - Confirmez que le jeton d’accès Facebook n’a pas expiré avant d’appeler
performLogin
La requête de jeton de session renvoie une erreur
Correctif :- Vérifiez que
FacebookAppIDest correctement défini dansInfo.plist - Assurez-vous que
fb_exchange_tokenest bien la chaîne brute du jeton (accessToken.tokenString) - Vérifiez que votre application Facebook n’est pas en Development Mode si vous testez avec des utilisateurs non administrateurs
AuthenticationError : “Connection not found”
Correctif :- Accédez à Auth0 Dashboard → Authentication → Social
- Vérifiez que Sign in with Facebook est activé
- Confirmez que Facebook Native Social Login est activé dans les paramètres de la connexion
- Vérifiez que l’application Auth0 est associée à la connexion Facebook
Certains champs du profil utilisateur sont manquants
- Confirmez que
"email"et"public_profile"sont inclus dans le tableaufbLoginButton.permissions - Il se peut que l’utilisateur ait refusé la permission
email— gérez ce cas correctement si le courriel est nil - Vérifiez que les mêmes champs figurent dans la requête
request.parameters["fields"]dansfetchUserProfile
Auth0.plist introuvable
- Assurez-vous que le nom du fichier est exactement
Auth0.plist(respect de la casse) - Dans Xcode, vérifiez le Target Membership du fichier — il doit être inclus dans la cible de votre application
Considérations pour la production
Considérations pour la production
Bonnes pratiques de sécurité
- Stockage sécurisé des jetons : utilisez le
CredentialsManagerd’Auth0.swift pour stocker les jetons de manière sécuritaire dans le Keychain iOS - Refresh tokens : demandez le scope
offline_accesset utilisezCredentialsManagerpour actualiser silencieusement les jetons expirés - Protection biométrique : activez l’authentification biométrique sur
CredentialsManagerpour protéger les informations d’identification stockées
Configuration de l’application Facebook
- Faites passer votre application Facebook de Development Mode à Live avant de la publier dans l’App Store
- Assurez-vous que le Bundle ID de votre application est enregistré dans la console de développement Facebook
- Consultez les exigences de la Data Policy de Facebook pour les applications qui utilisent le Login SDK
Soumission à l’App Store
- Incluez Facebook Login dans la politique de confidentialité de votre application et dans l’étiquette de confidentialité de l’App Store
- Gérez les cas où l’utilisateur refuse la permission
email— votre application devrait fonctionner sans celle-ci - Testez sur un appareil réel avant la soumission; le Facebook SDK se comporte différemment dans le simulateur
Alternative async/await
Alternative async/await
Si vous ciblez iOS 15+, vous pouvez utiliser async/await pour écrire un code plus clair, sans imbrication :Encapsulez chaque méthode basée sur des callbacks dans un
ViewController.swift
withCheckedThrowingContinuation pour faire le pont vers async/await.Prochaines étapes
Configurer d’autres fournisseurs d’identité
Ajoutez Google, Apple et d’autres fournisseurs de connexion sociale
Protection contre les attaques
Protégez-vous contre les attaques par force brute et les bots
Actions
Personnalisez les flux d’authentification avec du code sans serveur
Référence du SDK iOS
Explorez la documentation complète du SDK Auth0.swift