在Android上解析Firebase Auth错误

时间:2018-01-09 13:31:41

标签: android parsing firebase exception firebase-authentication

我在我的应用中使用FirebaseAuth,并尝试正确解析Firebase错误。我在旧的应用程序上完成它,就像这样,但我无法使它在新的(和空的应用程序)中工作。

我已登录我的应用程序,我从firebase门户禁用我的帐户(或更改密码),故意在我的手机上取消验证当前会话。

在手机上我做了一个" getIdToken"和Firebase发生错误(如例外)。

然而,Firebase使用简单的消息触发FirebaseException"发生了内部错误。 [USER_DISABLED]"

所以我们得到了错误,但是我们需要解析字符串,而不是正确...

在我的旧应用中,firebase解除了正确的可识别异常,例如" FirebaseAuthInvalidUserException"或" FirebaseAuthInvalidCredentialsException"对于不良凭证等。

FirebaseAuth mAuth = FirebaseAuth.getInstance();
mAuth.getCurrentUser().getIdToken(true).addOnSuccessListener(getTokenResult -> {
   Log.d("GetToken", "token : " + getTokenResult.getToken());
}).addOnFailureListener(e -> {
   Log.d("GetToken", "error : " + e.getMessage() + ", " + parseFirebaseException(e));
});

ConnectionFailureReason parseFirebaseException(Exception exception) {
    try {
        throw exception;
    } catch (FirebaseAuthInvalidCredentialsException e) {
        return ConnectionFailureReason.BAD_CREDENTIALS;
    } catch (FirebaseAuthInvalidUserException e) {
        // Thrown when performing an operation on a FirebaseUser instance that is no longer valid.
        switch (e.getErrorCode()) {
            case ERROR_USER_NOT_FOUND:
                return ConnectionFailureReason.BAD_CREDENTIALS;
            case ERROR_USER_DISABLED:
                return ConnectionFailureReason.USER_DISABLED;
            case ERROR_USER_TOKEN_EXPIRED:
                return ConnectionFailureReason.SESSION_EXPIRED;
            case ERROR_INVALID_USER_TOKEN:
                return ConnectionFailureReason.SESSION_EXPIRED;
            default:
                return ConnectionFailureReason.SERVER_ERROR;
        }

.... //list of all exceptions available

    } catch (Exception e) {
        return ConnectionFailureReason.UNKNOWN_ERROR;
    }
}

编辑: 我做了一些额外的测试,事实上问题似乎只出现在getToken上(以及旧的应用程序上)。现在问题是,GetTokenId返回通用Exception而其他firebase函数返回特定异常是否正常?

0 个答案:

没有答案