Comment attraper une Firebase Auth exceptions spécifiques
À l'aide de Firebase, comment puis-je attraper une exception spécifique et indiquer à l'utilisateur gracieusement à ce sujet? E. g :
FirebaseAuthInvalidCredentialsException: L'adresse e-mail est mal
formaté.
Je suis en utilisant le code ci-dessous pour vous inscrire à l'utilisateur en utilisant l'email et le mot de passe, mais je ne suis pas aussi avancé dans java.
mAuth.createUserWithEmailAndPassword(email, pwd)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (!task.isSuccessful()) {
//H.toast(c, task.getException().getMessage());
Log.e("Signup Error", "onCancelled", task.getException());
} else {
FirebaseUser user = mAuth.getCurrentUser();
String uid = user.getUid();
}
}
});
Vous devez vous connecter pour publier un commentaire.
Vous pouvez jeter l'Exception retournée par
task.getException
à l'intérieur d'un bloc try et catch chaque type d'Exception peut être levée par la méthode que vous utilisez.Voici un exemple de la
OnCompleteListener
pour lacreateUserWithEmailAndPassword
méthode.catch
bloc pour toutes les exceptions qui n'ont pas de type spécifique.En plus de @pdegand59 réponse, j'ai trouvé un code d'erreur dans Firebase de la bibliothèque et de test sur Android (le code d'erreur retourné). Espérons que cela aide, Cordialement.
Vous devez utiliser
((FirebaseAuthException)task.getException()).getErrorCode()
pour obtenir le type de l'erreur et de l'échec normalement si c'est le code d'erreur pour un mauvais email formaté.Malheureusement, je ne pouvais pas trouver la liste des codes d'erreur utilisé par Firebase.
Déclenchement de l'exception une fois, notez le code d'erreur et le code en conséquence.
Il y a un certain nombre d'exceptions associés avec firebase auth.
En plus de @kingspeech
Vous devez utiliser
((FirebaseAuthException)task.getException()).getErrorCode()
pour obtenir le type d'erreur et puis le gérer dansswitch
comme ceci :Si vous souhaitez simplement afficher un message à l'utilisateur, cela fonctionne. Simple et Élégant:
Il semble que l' .méthode getMessage() convertit l'exception d'un format utilisable pour nous déjà, et tout ce que nous avons à faire, c'est afficher que quelque part à l'utilisateur.
(C'est mon premier commentaire, la critique constructive s'il vous plaît)
getMessage()
méthode en disant :Method invocation 'getMessage' may produce 'java.lang.NullPointerException'
. Comment résoudre ce problème?if(task.getException != null) { Toast.makeText... }
;Si vous êtes en amont de l'envoi de messages de l'utilisateur) dans le cloud, de mettre en œuvre firebase fonctions de rappel
onMessageSent
etonSendError
pour vérifier l'état de l'amont des messages. En cas d'erreur,onSendError
renvoie une SendException avec un code d'erreur.Par exemple, si le client tente d'envoyer plusieurs messages à la suite de la 20-message limite est atteinte, il retourne SendException#ERROR_TOO_MANY_MESSAGES.
Vous pouvez utiliser soit steve-guidetti ou pdegand59 méthode. J'ai utilisé steve-guidetti la méthode(à Deux exceptions sont manquantes)
Pour tous les exception possible s'il vous plaît trouver ci-dessous réf.
Il est bien documenté ici.
https://firebase.google.com/docs/reference/js/firebase.auth.Auth
De la recherche pour "createUserWithEmailAndPassword" et trouver le
Pour tous les cinq exceptions: Cochez ici
https://firebase.google.com/docs/reference/android/com/google/firebase/auth/FirebaseAuthException
Ici vous pouvez trouver les 5 différents types de AuthException. 4 Connu Directe de sous-classe et 1 indirects sous-classe
Vous pouvez utiliser soit steve-guidetti ou pdegand59 méthode.
J'ai essayé une autre des solutions, mais ne les aimais pas.
Quoi à ce sujet:
LOGIN_EXCEPTIONS
FirebaseAuthException
- Générique de l'exception relative aux Firebase d'Authentification. Vérifier le code d'erreur et un message pour plus de détails.ERROR_USER_DISABLE
D si l'utilisateur a été désactivé (par exemple, dans le Firebase console)ERROR_USER_NOT_FOUND
si l'utilisateur a été supprimé (par exemple, dans le Firebase de la console, ou dans une autre instance de cette application)ERROR_USER_TOKEN_EXPIRED
si le jeton de l'utilisateur a été révoqué dans le backend. Cela se fait automatiquement si l'utilisateur les informations d'identification de changement dans un autre appareil (par exemple, sur un changement de mot de passe de l'événement).ERROR_INVALID_USER_TOKEN
si le jeton de l'utilisateur est incorrect. Cela ne devrait pas arriver dans des circonstances normales.REGISTER_EXCEPTIONS
Représente l'exception, qui est le résultat d'une tentative d'envoyer un mail via Firebase Auth (par exemple, un e-mail de réinitialisation de mot de passe)
FirebaseAuthInvalidCredentialsException
- Levée lorsque l'une ou plusieurs des références transmises à un échec de la méthode pour identifier et/ou authentifier l'utilisateur sous réserve de l'opération. Inspecter le code d'erreur et un message pour connaître la cause exacte.FirebaseAuthWeakPasswordException
- Levée lors de l'utilisation d'un mot de passe faible (moins de 6 caractères) pour créer un nouveau compte ou mettre à jour un mot de passe du compte. Utilisation getReason() pour obtenir un message avec la raison de l'échec de la validation que vous pouvez montrer à vos utilisateurs.codes d'erreur: https://stackoverflow.com/a/38244409/2425851
Pour attraper un firebase Exception est facile, vous devez ajouter
.addOnFailureListener
après vous ajoutez.addOnCompleteListener
comme ceci:Dans le passé, nous avons utilisé le getErrorCode() pour obtenir le type de l'erreur et de l'échec gracieusement. Avec les nouvelles versions de l'api, getErrorCode() est obsolète. Nous devrions utiliser la réponse.getError().getErrorCode() à la place
Donc, pour par exemple
Essayez ce qui suit:
vous pouvez utiliser ceci: