web-dev-qa-db-fra.com

Firebase sur Android: comment vérifier si l'authentification de Firebase a échoué?

J'utilise Firebase sur les fonctions Android et Firebase Auth.

J'essaie FirebaseAuth.signInWithEmailAndPassword et en cas d'échec, je veux savoir "Pourquoi le processus de connexion a échoué?"

La méthode signInWithEmailAndPassword a addOnFailureListener API. Et je peux attraper la Exception (peut-être FirebaseAuthException) dans la méthode de rappel onFailure.

auth.signInWithEmailAndPassword(loginRequest.id, loginRequest.password)
  .addOnFailureListener(new OnFailureListener() {
    @Override
    public void onFailure(@NonNull Exception e) {
      if (e instanceof FirebaseAuthException) {
        ((FirebaseAuthException) e).getErrorCode());
      }
    }
  });

Je veux savoir pourquoi le processus de connexion a échoué. dans onFailure.

Je pense que cela pourrait être fait comme suit:

  1. Contrôle du type d'instance e (e instanceOf FirebaseAuthInvalidUserException ou FirebaseAuthInvalidCredentialsException ou ,)
  2. e.getErrorCode()

Je ne veux pas taper de chèques (c'est sale).
Je préfère la voie du choix 2. ci-dessus. Mais je n'ai pas trouvé la définition de la collection de valeurs de retour e.getErrorCode(). par exemple ERROR_INVALID_EMAIL, ERROR_ACCOUNT_EXISTS_WITH_DIFFERENT_CREDENTIAL, etc. (où sont-ils définis?)

Dites-moi quel est le meilleur moyen de vérifier la raison de Firebase auth failed.

Merci.

16
yuki312

J'avais les mêmes doutes et j'ai trouvé un peu plus d'informations sur leur documentation. 

Par exemple, vous utilisez cette méthode createUserWithEmailAndPassword que vous pouvez voir sur la page documentation les exceptions suivantes:

Exceptions:

FirebaseAuthWeakPasswordException levée si le mot de passe n'est pas assez fort FirebaseAuthInvalidCredentialsException levée si l'adresse e-mail est mal formée FirebaseAuthUserCollisionException levée s'il existe déjà un compte avec l'adresse e-mail fournie.

Pour chaque exception, il existe également une page de documentation, par exemple celle de FirebaseAuthUserCollisionException

Et ici vous pouvez voir les différents types d'erreur:

ERROR_EMAIL_ALREADY_IN_USE lorsque vous essayez de créer un nouveau compte avec createUserWithEmailAndPassword (String, String) ou de modifier l'adresse e-mail d'un utilisateur à la suite. adresse e-mail utilisée par un autre compte. Cette erreur ne sera émise que si le paramètre "Un compte par adresse électronique" est activé dans la console Firebase (recommandé) . ERROR_CREDENTIAL_ALREADY_IN_USE lors de la tentative de liaison d'un utilisateur avec AuthCredential correspondant à un autre compte déjà utilisé.

Donc, si vous faites un getErrorCode () et comparez la chaîne avec l’une de ces constantes, vous saurez exactement la cause de l’exception.

J'espère que ça aide.

8
Lancelot

J'ai trouvé des codes dans la bibliothèque Firebase similaires aux messages d'échec observés jusqu'à présent. Mais je n'ai pas encore essayé. Vous pouvez essayer.

    ("ERROR_INVALID_CUSTOM_TOKEN", "The custom token format is incorrect. Please check the documentation."));
    ("ERROR_CUSTOM_TOKEN_MISMATCH", "The custom token corresponds to a different audience."));
    ("ERROR_INVALID_CREDENTIAL", "The supplied auth credential is malformed or has expired."));
    ("ERROR_INVALID_EMAIL", "The email address is badly formatted."));
    ("ERROR_WRONG_PASSWORD", "The password is invalid or the user does not have a password."));
    ("ERROR_USER_MISMATCH", "The supplied credentials do not correspond to the previously signed in user."));
    ("ERROR_REQUIRES_RECENT_LOGIN", "This operation is sensitive and requires recent authentication. Log in again before retrying this request."));
    ("ERROR_ACCOUNT_EXISTS_WITH_DIFFERENT_CREDENTIAL", "An account already exists with the same email address but different sign-in credentials. Sign in using a provider associated with this email address."));
    ("ERROR_EMAIL_ALREADY_IN_USE", "The email address is already in use by another account."));
    ("ERROR_CREDENTIAL_ALREADY_IN_USE", "This credential is already associated with a different user account."));
    ("ERROR_USER_DISABLED", "The user account has been disabled by an administrator."));
    ("ERROR_USER_TOKEN_EXPIRED", "The user\'s credential is no longer valid. The user must sign in again."));
    ("ERROR_USER_NOT_FOUND", "There is no user record corresponding to this identifier. The user may have been deleted."));
    ("ERROR_INVALID_USER_TOKEN", "The user\'s credential is no longer valid. The user must sign in again."));
    ("ERROR_OPERATION_NOT_ALLOWED", "This operation is not allowed. You must enable this service in the console."));
    ("ERROR_WEAK_PASSWORD", "The given password is invalid."));
9
ugur

Une fois que vous avez activé la méthode d’authentification email + password avec succès, vous devrez créer une application pour que votre projet Firebase fonctionne.

Allez à: Aperçu -> Ajouter une autre application -> Suivez les étapes suivantes en fonction de vos besoins.

J'espère que ça aide tout le monde. À votre santé!

1
pinkfloyd