我目前想知道如何在使用 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>
中收集到具体的错误代码。目的。我知道我可以收集 Exception
和 Toast
这条消息,虽然我更愿意在正确的错误代码上进行切换而不是使用 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/