Подтвердить что ты не робот

Firebase на Android: как проверить Firebase auth неудачную причину?

Я использую Firebase для функций Android и Firebase Auth.

Я пытаюсь FirebaseAuth.signInWithEmailAndPassword, и в случае его отказа я хочу знать "Почему процесс signIn не удался?"

signInWithEmailAndPassword имеет addOnFailureListener API. И я могу поймать Exception (возможно FirebaseAuthException) в методе обратного вызова onFailure.

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

Я хочу знать, почему процесс SignIn завершился неудачно. в onFailure.

Я думаю, это можно сделать следующим образом:

  • e проверка типа экземпляра (e instanceOf FirebaseAuthInvalidUserException или FirebaseAuthInvalidCredentialsException или,,)
  • e.getErrorCode()

Я не хочу печатать чеки (это грязно).
Я предпочитаю способ выбора 2. выше. Но я не смог найти определение коллекции возвращаемых значений e.getErrorCode(). например, ERROR_INVALID_EMAIL, ERROR_ACCOUNT_EXISTS_WITH_DIFFERENT_CREDENTIAL и т.д. (Где они определены?)

Скажите, пожалуйста, какой способ проверить причину Firebase auth failed.

Спасибо.

4b9b3361

Ответ 1

У меня были те же сомнения, и я нашел немного больше информации о своей документации.

Например, если вы используете этот метод createUserWithEmailAndPassword, вы можете увидеть на странице следующие исключения:

Исключения:

FirebaseAuthWeakPasswordException, если пароль недостаточно сильный FirebaseAuthInvalidCredentials Исключение, если адрес электронной почты неверен FirebaseAuthUserCollisionException выбрано, если уже существует учетная запись с указанным адресом электронной почты

Для каждого исключения существует также страница документации, например, для FirebaseAuthUserCollisionException

Здесь вы можете увидеть разные типы ошибок:

ERROR_EMAIL_ALREADY_IN_USE при попытке создать новую учетную запись с помощью createUserWithEmailAndPassword (String, String) или изменить адрес электронной почты пользователя, если письмо уже используется другой учетной записью ERROR_ACCOUNT_EXISTS_WITH_DIFFERENT_CREDENTIAL при вызове signInWithCredential (AuthCredential) с учетными данными, которые определяют адрес электронной почты, используемый другой учетной записью. Эта ошибка будет выдаваться только в том случае, если параметр "Одна учетная запись для каждого адреса электронной почты" включен в консоли Firebase (рекомендуется). ERROR_CREDENTIAL_ALREADY_IN_USE при попытке связать пользователя с AuthCredential, соответствующим другой учетной записи, уже используемой

Итак, если вы делаете getErrorCode() и сравниваете строку с любой из этих констант, вы точно узнаете причину исключения.

Надеюсь, что это поможет.

Ответ 2

Я нашел некоторые коды внутри библиотеки Firebase, похожие на сообщения об ошибках, которые были обнаружены до сих пор. Но Хавент еще пытался. Вы можете попробовать.

    ("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\ 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\ 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."));

Ответ 3

Как только вы успешно включили метод авторизации электронной почты + пароль, вам нужно будет создать приложение для проекта Firebase.

Перейдите по ссылке: Обзор → Добавить другое приложение → Следуйте следующим шагам в соответствии с вашими потребностями.

Надеюсь, это поможет всем. Ура!