android - 如何从 Firebase Task<AuthResult> 登录失败中检索错误代码?

标签 android authentication error-handling firebase firebase-authentication

我目前想知道如何在使用 Firebase 执行登录失败后获取错误代码.从他们的遗留代码中,您可以在下面的链接中看到:

https://www.firebase.com/docs/android/guide/user-auth.html#section-handling-errors

@Override
public void onAuthenticationError(FirebaseError error) {
    switch (error.getCode()) {
        case FirebaseError.USER_DOES_NOT_EXIST:
            // handle a non existing user
            break;
        case FirebaseError.INVALID_PASSWORD:
            // handle an invalid password
            break;
        default:
            // handle other errors
            break;
    }
}

为您提供了一个 onAuthenticationError , 其中FirebaseError然后可以具体分析以产生不同的错误反馈给用户。然而,由于他们最近发布了新的 API,我已经开始使用它了。这是我现在必须使用的代码:

@Override
public void onComplete(@NonNull Task<AuthResult> task) {
    //If authentication fails
    if (!task.isSuccessful()) {
        // Handle the specific individual errors such as incorrect passwords
    }
}

不幸的是,我不确定如何从 Task<AuthResult> 中收集到具体的错误代码。目的。我知道我可以收集 ExceptionToast这条消息,虽然我更愿意在正确的错误代码上进行切换而不是使用 String解释发生的错误。

最佳答案

如果您的代码已经有 onCompleteListener 那么我不建议您添加 onFailureListner 只是获取有关异常的信息,因为它会增加监听器的数量。 您可以获得如下错误代码和消息。

@Override
public void onComplete(@NonNull Task<AuthResult> task) {
    //If authentication fails
    if (!task.isSuccessful()) {
        String message = task.getException().getMessage();
        String localizedMessage = task.getException().getLocalizedMessage();
        String errorCode = ((FirebaseAuthInvalidUserException) task.getException()).getErrorCode();
    }
}

我会推荐使用本地化消息,而不仅仅是消息,因为本地化消息很短,并且包含足够的信息来解决错误。

关于android - 如何从 Firebase Task<AuthResult> 登录失败中检索错误代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37920397/

相关文章:

java - 尝试将 HeaderView 添加到 listView android 时出现 ClassCastException

facebook - FB.login 对话框不会在 Google Chrome 上关闭

python - 如何使用 mysql 作为数据库在 Pyramid 中设置登录系统来存储电子邮件和密码?

android - 如何将常用电子邮件域(gmail/yahoo/hotmail)的快捷方式添加到 android 电视键盘?

android - 您如何获得联系人组的成员?

android - Dart/Flutter - 调用/执行存储在属性的字符串变量中的方法

php - 我的身份验证加密有什么好处吗?

database - 如何在 YII2 中处理/捕获来自数据库触发器的错误

error-handling - 带通配符的WorkflowError

android - 使用smtp和Gmail在android上发送电子邮件如何使其工作