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

edw*_*ard 7 error-handling android login 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

为您提供onAuthenticationErrorFirebaseError然后可以对其进行专门分析,以向用户产生不同的反馈错误。但是,由于他们最近发布了新的API,所以我开始使用它。这是我现在必须使用的代码:

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

不幸的是,我不确定如何从Task<AuthResult>对象中收集特定的错误代码。我理解我可以收集ExceptionToast该消息,尽管我宁愿对正确的错误代码进行切换,而不是String解释发生的错误。

Ami*_*der 1

我对此有些挣扎,但找到了答案。试一试:

@Override
public void onComplete(@NonNull Task<AuthResult> task) {
    if (task.isSuccessful()) {
        Toast.makeText(activity, "Authentication completed.",
        Toast.LENGTH_SHORT).show();

    } else {
        Toast.makeText(activity, "Authentication failed:" +      
        task.getException(), Toast.LENGTH_SHORT).show();
    }
Run Code Online (Sandbox Code Playgroud)

为了得到我使用的异常:task.getException().

祝你好运