Avant de commencer
- Configurer le SDK Facebook Login - Installez et configurez le SDK Facebook Login pour iOS. Créez une application Facebook à l’adresse developers.facebook.com. Une fois cette étape terminée, Facebook Login devrait fonctionner dans votre application.
- Configurer Auth0 pour Facebook Native - Configurez votre application Auth0 pour utiliser Facebook Native Sign In. Consultez Ajouter Facebook Login aux applications natives.
Pour commencer
Configurer les autorisations pour 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 détaillé, vous devez demander les autorisations public_profile et email. Vous ajouterez également une méthode de rappel du délégué pour lancer le flux d’authentification Auth0.ViewController.swift
L’autorisation
email est facultative — l’utilisateur doit consentir à partager son courriel. Le courriel renvoyé par Facebook sera indiqué comme non vérifié dans le profil Auth0 de l’utilisateur.Installer et configurer le SDK d’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 à File → Add Package Dependencies…
- Entrez l’URL du package :
https://github.com/auth0/Auth0.swift - Sélectionnez la dernière version, puis cliquez sur Add Package
Auth0.plist :Accédez à la section Applications du Auth0 Dashboard et sélectionnez l’application pour laquelle vous avez activé Facebook Native Sign In. Copiez les valeurs Domaine et ID client.Créez un nouveau fichier de liste de propriétés nommé Auth0.plist dans votre projet et ajoutez ce qui suit :Auth0.plist
Auth0.plist dans Xcode et assurez-vous que l’option Ajouter à la cible est cochée pour la cible de votre app.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 depuis l’API Facebook. Auth0 a besoin de ce jeton pour vérifier l’identité de l’utilisateur côté serveur.Effectuez 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 de jeton provenant duAccessTokende Facebookclient_id: l’ID de votre application Facebook (déjà dans votreInfo.plistlors de la configuration du SDK Facebook)
Récupérer le profil de l’utilisateur Facebook
Récupérez le profil de l’utilisateur à partir de Facebook. Auth0 utilise ces données pour créer ou mettre à jour le profil de l’utilisateur dans Auth0.
ViewController.swift
Échanger des jetons contre des informations d’authentification Auth0
Utilisez le jeton de session et le profil utilisateur des étapes précédentes pour vous authentifier auprès d’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 Facebook native.Point de contrôleVous devriez maintenant pouvoir vous authentifier directement avec Facebook. Si l’application Facebook est installée sur l’appareil, l’authentification se fait directement dans l’application — aucun navigateur n’est nécessaire.
Dépannage et options avancées
Problèmes courants et solutions
Problèmes courants et solutions
L’échange de jetons échoue avec une erreur d’authentification
Solutions :- Vérifiez que Facebook Native Sign In est activé pour votre application Auth0 dans Auth0 Dashboard
- Vérifiez que
FacebookAppIDdansInfo.plistcorrespond à l’ID de l’application dans la console Facebook Developer - 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_tokencorrespond à la chaîne brute du jeton (accessToken.tokenString) - Vérifiez que votre application Facebook n’est pas en mode développement si vous faites des tests avec des utilisateurs non administrateurs
AuthenticationError : “Connexion introuvable”
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
Des champs du profil utilisateur sont manquants
- Confirmez que
"email"et"public_profile"figurent dans le tableaufbLoginButton.permissions - Il se peut que l’utilisateur ait refusé l’autorisation
email— gérez correctement un courriel nil - Vérifiez que les mêmes champs figurent dans l’appel
request.parameters["fields"]dansfetchUserProfile
Auth0.plist est introuvable
- Assurez-vous que le nom du fichier est exactement
Auth0.plist(respect de la casse) - Dans Xcode, vérifiez Target Membership pour le fichier — il doit être inclus dans la cible de votre application
Considérations pour la production
Considérations pour la production
Pratiques exemplaires de sécurité
- Stockage sécurisé des jetons : utilisez le
CredentialsManagerd’Auth0.swift pour stocker les jetons de façon sécurisée dans le trousseau iOS - Jetons d’actualisation : demandez le scope
offline_accesset utilisezCredentialsManagerpour actualiser silencieusement les jetons expirés - Protection biométrique : activez l’authentification biométrique dans
CredentialsManagerpour protéger les identifiants stockés
Configuration de l’application Facebook
- Faites passer votre application Facebook du mode développement à Live avant sa publication dans l’App Store
- Assurez-vous que l’identifiant de bundle de votre application est enregistré dans la console Facebook Developer
- 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 l’autorisation
email— votre application doit fonctionner sans celle-ci - Faites des tests sur un appareil réel avant la soumission; le SDK Facebook se comporte différemment dans les simulateurs
Alternative avec async/await
Alternative avec async/await
Si vous ciblez iOS 15+, vous pouvez utiliser async/await pour écrire du code plus clair et non imbriqué :Enveloppez chaque méthode basée sur des callbacks dans un
ViewController.swift
withCheckedThrowingContinuation pour faire le lien avec 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
Consultez la documentation complète du SDK Auth0.swift