Gérer les erreurs d'authentification des plates-formes Firebase Apple

Si le rappel d'achèvement des méthodes Authentication reçoit un argument NSError qui n'est pas nul, une erreur s'est produite. Pour envoyer les messages vers un système de gestion des exceptions approprié dans votre code de production, comparez le code d'erreur aux erreurs courantes les erreurs propres à la méthode répertoriées ci-dessous.

Certaines erreurs peuvent être résolues par des actions spécifiques de l'utilisateur, par exemple FIRAuthErrorCodeUserTokenExpired peut être résolu en connectant l'utilisateur et FIRAuthErrorCodeWrongPassword en demandant à l'utilisateur de fournir le bon mot de passe.

Sauf dans le cas de FIRAuthErrorCodeNetworkError ou FIRAuthErrorCodeTooManyRequests : nouvelle tentative d'une opération ayant échoué avec le même n'aboutira jamais. Ne faites aucune hypothèse sur si l'opération a pris effet côté serveur.

Lorsque vous examinez ou consignez des erreurs, consultez le dictionnaire userInfo. FIRAuthErrorNameKey contient une chaîne de nom d'erreur multiplate-forme pouvant être utilisée pour identifier l'erreur. NSLocalizedDescriptionKey contient une description de l'erreur. Ce la description est destinée au développeur, pas à l'utilisateur. NSUnderlyingErrorKey contient l'erreur sous-jacente qui a provoqué l'erreur dans si une erreur sous-jacente est présente.

En plus des principaux champs listés ci-dessus, le dictionnaire userInfo peut contenir d'autres champs qui peuvent vous être utiles pour diagnostiquer les erreurs.

Codes d'erreur communs à toutes les méthodes d'API

Code Signification
FIRAuthErrorCodeNetworkError Indique qu'une erreur réseau s'est produite pendant l'opération.
FIRAuthErrorCodeUserNotFound Indique que le compte utilisateur est introuvable. Cela peut se produire si le compte utilisateur a été supprimé.
FIRAuthErrorCodeUserTokenExpired Indique que le jeton de l'utilisateur actuel a expiré. Par exemple, l'utilisateur a peut-être modifié le mot de passe du compte sur un autre appareil. Vous devez inviter l'utilisateur à se reconnecter sur cet appareil.
FIRAuthErrorCodeTooManyRequests Indique que la requête a été bloquée après l'envoi d'un nombre anormal de requêtes aux serveurs Firebase Authentication depuis l'appareil appelant. Réessayez plus tard.
FIRAuthErrorCodeInvalidAPIKey Indique que l'application a été configurée avec une clé API non valide.
FIRAuthErrorCodeAppNotAuthorized Indique que l'application n'est pas autorisée à utiliser Firebase Authentication avec la clé API fournie. Accédez à la console Google APIs et vérifiez, dans l'onglet "Credentials" (Identifiants), que l'ID de bundle de votre application figure sur la liste blanche de la clé API que vous utilisez.
FIRAuthErrorCodeKeychainError Indique qu'une erreur s'est produite lors de l'accès au trousseau. Les champs NSLocalizedFailureReasonErrorKey et NSUnderlyingErrorKey du dictionnaire NSError.userInfo contiennent plus d'informations sur l'erreur rencontrée.
FIRAuthErrorCodeInternalError Indique qu'une erreur interne s'est produite. Veuillez signaler l'erreur concernant l'intégralité de l'objet NSError.

Codes d'erreur spécifiques aux méthodes

FIRAuth

retrieveProvidersForEmail:completion:

Code Signification
FIRAuthErrorCodeInvalidEmail Indique que le format de l'adresse e-mail est incorrect.

signInWithEmail:password:completion:

Code Signification
FIRAuthErrorCodeOperationNotAllowed Indique que les comptes de messagerie et de mot de passe ne sont pas activés. Activez-les dans la section "Authentification" de la console Firebase.
FIRAuthErrorCodeInvalidEmail Indique que le format de l'adresse e-mail est incorrect.
FIRAuthErrorCodeUserDisabled Indique que le compte de l'utilisateur est désactivé.
FIRAuthErrorCodeWrongPassword Indique que l'utilisateur a tenté de se connecter avec un mot de passe incorrect.

signInWithCredential:completion:

Code Signification
FIRAuthErrorCodeInvalidCredential Indique que l'identifiant fourni n'est pas valide. Cela peut se produire s'il a expiré ou si son format est incorrect.
FIRAuthErrorCodeInvalidEmail Indique que l'adresse e-mail est mal formée, si les identifiants sont de type EmailPasswordAuthCredential.
FIRAuthErrorCodeOperationNotAllowed Indique que les comptes associés au fournisseur d'identité représenté par les identifiants ne sont pas activés. Activez-les dans la section "Authentification" de la console Firebase.
FIRAuthErrorCodeEmailAlreadyInUse Indique que l'adresse e-mail déclarée par les identifiants (par exemple, l'adresse e-mail dans un jeton d'accès Facebook) est déjà utilisée par un compte existant, qui ne peut pas être authentifié avec cette méthode de connexion. Appelez fetchProvidersForEmail pour obtenir l'adresse e-mail de cet utilisateur, puis invitez-le à se connecter avec l'un des fournisseurs de connexion renvoyés. Cette erreur ne se produit que si le paramètre "Un compte par adresse e-mail" est activé dans la console Firebase, sous les paramètres Authentication.
FIRAuthErrorCodeUserDisabled Indique que le compte de l'utilisateur est désactivé.
FIRAuthErrorCodeWrongPassword Indique que l'utilisateur a tenté de se connecter avec un mot de passe incorrect, si le type d'identifiant est EmailPasswordAuthCredential.

signInAuthenticatelyWithCompleted:

Code Signification
FIRAuthErrorCodeOperationNotAllowed Indique que les comptes anonymes ne sont pas activés. Activez-les dans la section "Authentification" de la console Firebase.

signInWithCustomToken:completion:

Code Signification
FIRAuthErrorCodeInvalidCustomToken Indique une erreur de validation avec le jeton personnalisé.
FIRAuthErrorCodeCustomTokenMismatch Indique que le compte de service et la clé API appartiennent à des projets différents.

createUserWithEmail:password:completion:

Code Signification
FIRAuthErrorCodeInvalidEmail Indique que l'adresse e-mail est mal formée.
FIRAuthErrorCodeEmailAlreadyInUse Indique que l'adresse e-mail utilisée pour tenter de s'inscrire existe déjà. Appelez fetchProvidersForEmail pour vérifier les mécanismes de connexion utilisés par cet utilisateur, puis invitez-le à se connecter avec l'un d'entre eux.
FIRAuthErrorCodeOperationNotAllowed Indique que les comptes de messagerie et de mot de passe ne sont pas activés. Activez-les dans la section Authentication de la console Firebase.
FIRAuthErrorCodeWeakPassword Indique une tentative de définition d'un mot de passe considéré comme trop faible. Le champ NSLocalizedFailureReasonErrorKey de l'objet de dictionnaire NSError.userInfo contient une explication plus détaillée pouvant être présentée à l'utilisateur.

se déconnecter:

Code Signification
FIRAuthErrorCodeKeychainError Une erreur s'est produite lors de l'accès au trousseau. Les champs NSLocalizedFailureReasonErrorKey et NSUnderlyingErrorKey du dictionnaire NSError.userInfo contiennent plus d'informations sur l'erreur rencontrée.

FIRUser

Erreurs courantes pour les opérations FIRUser

Code Signification
FIRAuthErrorCodeInvalidUserToken Indique que le jeton d'actualisation de l'utilisateur connecté, qui contient les informations de session, n'est pas valide. Vous devez demander à l'utilisateur de se reconnecter sur cet appareil.
FIRAuthErrorCodeUserDisabled Indique que le compte de l'utilisateur est désactivé et qu'il ne peut plus être utilisé tant qu'il ne peut pas être réactivé dans le panneau "Utilisateurs" de la console Firebase.

reauthenticatedWithCredential:completion:

Code Signification
FIRAuthErrorCodeInvalidCredential Indique que l'identifiant fourni n'est pas valide. Cela peut se produire s'il a expiré ou si son format est incorrect.
FIRAuthErrorCodeInvalidEmail Indique que le format de l'adresse e-mail est incorrect si l'identifiant est de type EmailPasswordAuthCredential.
FIRAuthErrorCodeWrongPassword Indique que l'utilisateur a tenté de se réauthentifier avec un mot de passe incorrect, si les identifiants sont de type EmailPasswordAuthCredential.
FIRAuthErrorCodeUserMismatch Indique qu'une tentative de réauthentification a été effectuée avec un utilisateur qui n'est pas l'utilisateur actuel.
FIRAuthErrorCodeOperationNotAllowed Indique que les comptes associés au fournisseur d'identité représenté par l'identifiant ne sont pas activés. Activez-les dans la section "Authentification" de la console Firebase.
FIRAuthErrorCodeEmailAlreadyInUse Indique que l'adresse e-mail déclarée par les identifiants (par exemple, l'adresse e-mail d'un jeton d'accès Facebook) est déjà utilisée par un compte existant, qui ne peut pas être de nouveau authentifiée avec cette méthode de connexion. Appelez fetchProvidersForEmail pour obtenir l'adresse e-mail de cet utilisateur, puis invitez-le à se connecter avec l'un des fournisseurs de connexion renvoyés. Cette erreur ne se produit que si le paramètre "Un compte par adresse e-mail" est activé dans la console Firebase, sous les paramètres Authentication.
FIRAuthErrorCodeUserDisabled Indique que le compte de l'utilisateur est désactivé.

updateEmail:completion:

Code Signification
FIRAuthErrorCodeEmailAlreadyInUse Indique que l'adresse e-mail est déjà utilisée par un autre compte.
FIRAuthErrorCodeInvalidEmail Indique que le format de l'adresse e-mail est incorrect.
FIRAuthErrorCodeRequiresRecentLogin La mise à jour de l'adresse e-mail d'un utilisateur est une opération de sécurité qui nécessite une connexion récente de la part de l'utilisateur. Cette erreur indique que l'utilisateur ne s'est pas connecté suffisamment récemment. Pour résoudre le problème, réauthentifiez l'utilisateur en appelant reauthenticateWithCredential:completion: sur FIRUser.

updatePassword:completion:

Code Signification
FIRAuthErrorCodeOperationNotAllowed Indique que l'administrateur a désactivé la connexion avec le fournisseur d'identité spécifié.
FIRAuthErrorCodeRequiresRecentLogin La mise à jour du mot de passe d'un utilisateur est une opération sensible à la sécurité qui nécessite une connexion récente de l'utilisateur. Cette erreur indique que l'utilisateur ne s'est pas connecté suffisamment récemment. Pour résoudre le problème, authentifiez à nouveau l'utilisateur en appelant reauthenticateWithCredential:completion: sur FIRUser.
FIRAuthErrorCodeWeakPassword Indique une tentative de définition d'un mot de passe considéré comme trop peu sécurisé. Le champ NSLocalizedFailureReasonErrorKey de l'objet de dictionnaire NSError.userInfo contient une explication plus détaillée pouvant être présentée à l'utilisateur.

linkWithCredential:completion:

Code Signification
FIRAuthErrorCodeProviderAlreadyLinked Indique une tentative d'association d'un fournisseur d'un type déjà associé à ce compte.
FIRAuthErrorCodeCredentialAlreadyInUse Indique une tentative d'association avec des identifiants déjà associés à un autre compte Firebase.
FIRAuthErrorCodeOperationNotAllowed Indique que les comptes associés au fournisseur d'identité représenté par les identifiants ne sont pas activés. Activez-les dans la section "Authentification" de la console Firebase.

Cette méthode peut également renvoyer des codes d'erreur associés à updateEmail:completion: et updatePassword:completion: sur FIRUser.

dissocierFromProvider:completion:

Code Signification
FIRAuthErrorCodeNoSuchProvider Indique une tentative de dissociation d'un fournisseur qui n'est pas associé au compte.
FIRAuthErrorCodeRequiresRecentLogin La mise à jour d'une adresse e-mail est une opération de sécurité qui nécessite une connexion récente de la part de l'utilisateur. Cette erreur indique que l'utilisateur ne s'est pas connecté suffisamment récemment. Pour résoudre le problème, réauthentifiez l'utilisateur en appelant reauthenticateWithCredential:completion: sur FIRUser.

sendEmailVerificationWithCompleted:

Code Signification
FIRAuthErrorCodeUserNotFound Indique que le compte utilisateur est introuvable.

deleteWithCompletion :

Code Signification
FIRAuthErrorCodeRequiresRecentLogin La suppression d'un compte utilisateur est une opération sensible à la sécurité qui nécessite une connexion récente de l'utilisateur. Cette erreur indique que l'utilisateur ne s'est pas connecté suffisamment récemment. Pour résoudre le problème, authentifiez à nouveau l'utilisateur en appelant reauthenticateWithCredential:completion: sur FIRUser.