webentwicklung-frage-antwort-db.com.de

Firebase unter Android: Wie überprüfe ich, warum die Firebase-Authentifizierung fehlgeschlagen ist?

Ich verwende Firebase auf Android- und Firebase Auth-Funktionen.

Ich versuche FirebaseAuth.signInWithEmailAndPassword und falls es fehlschlägt, möchte ich wissen, warum der Anmeldevorgang fehlgeschlagen ist.

Die Methode signInWithEmailAndPassword verfügt über die API addOnFailureListener. Und ich kann die Exception (vielleicht FirebaseAuthException) in der onFailure-Rückrufmethode abfangen.

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

Ich möchte wissen, warum der Anmeldevorgang fehlgeschlagen ist. in onFailure.

Ich denke, es könnte wie folgt gemacht werden:

  1. e Instanztypprüfung (e instanceOf FirebaseAuthInvalidUserException oder FirebaseAuthInvalidCredentialsException oder ,)
  2. e.getErrorCode()

Ich möchte keine Schecks eintippen (es ist schmutzig).
Ich bevorzuge den Weg in Wahl 2. oben. Aber ich konnte die Definition von e.getErrorCode() return values ​​collection nicht finden. z. B. ERROR_INVALID_EMAIL, ERROR_ACCOUNT_EXISTS_WITH_DIFFERENT_CREDENTIAL usw. (Wo sind sie definiert?)

Sagen Sie mir bitte, welche Methode am besten geeignet ist, um den Grund für Firebase auth failed zu ermitteln.

Vielen Dank.

16
yuki312

Ich hatte die gleichen Zweifel und fand etwas mehr Informationen in ihrer Dokumentation. 

Beispielsweise verwenden Sie in dieser Methode createUserWithEmailAndPassword auf ihrer Dokumentationsseite die folgenden Ausnahmen:

Ausnahmen:

FirebaseAuthWeakPasswordException wird ausgelöst, wenn das Kennwort nicht stark genug ist FirebaseAuthInvalidCredentialsException wird ausgelöst, wenn die E-Mail-Adresse fehlerhaft ist FirebaseAuthUserCollisionException wird ausgelöst, wenn bereits ein Konto mit der angegebenen E-Mail-Adresse vorhanden ist

Für jede Ausnahme gibt es auch eine Dokumentationsseite, beispielsweise die für FirebaseAuthUserCollisionException

Und hier können Sie die verschiedenen Fehlertypen sehen:

ERROR_ArAIL_ALREADY_IN_USE beim Versuch, ein neues Konto mit createUserWithEmailAndPassword (String, String) zu erstellen oder die E-Mail-Adresse eines Benutzers zu ändern, wenn die E-Mail-Adresse bereits von einem anderen Konto verwendet wird .__ E-Mail-Adresse, die von einem anderen Konto verwendet wird. Dieser Fehler wird nur ausgegeben, wenn die Einstellung "Ein Konto pro E-Mail-Adresse" in der Firebase-Konsole aktiviert ist (empfohlen) ERROR_CREDENTIAL_ALREADY_IN_USE, wenn versucht wird, einen Benutzer mit einem AuthCredential zu verknüpfen, das einem bereits verwendeten Konto entspricht

Wenn Sie also einen getErrorCode () ausführen und die Zeichenfolge mit einer dieser Konstanten vergleichen, werden Sie die Ursache der Ausnahme genau kennen.

Ich hoffe es hilft.

8
Lancelot

Ich habe einige Codes in der Firebase-Bibliothek gefunden, die den Fehlermeldungen bisher ähneln. Aber noch nicht versucht. Du kannst es versuchen.

    ("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

Nachdem Sie die Authentifizierungsmethode email + password erfolgreich aktiviert haben, müssen Sie eine Anwendung erstellen, damit Ihr Firebase-Projekt funktioniert.

Gehen Sie zu: Übersicht -> Weitere App hinzufügen -> Folgen Sie den nächsten Schritten entsprechend Ihren Anforderungen.

Ich hoffe es hilft allen. Prost!

1
pinkfloyd