我正在使用 Firebase Auth 构建登录流程,以使用电子邮件和密码对用户进行身份验证。登录时,有些事情可能会出错:给定电子邮件地址不存在帐户,密码错误 (...)。
Firebase 是否会返回任何错误代码以便我可以添加错误处理?我只找到了可用于错误处理的异常消息,但是有什么方法可以使错误代码变得更整洁吗?我在 Firebase 官方文档中找不到任何内容。
auth.signInWithEmailAndPassword(email, password).addOnCompleteListener { task ->
if (task.isSuccessful) {
// Sign in success, update UI with the signed-in user's information
Log.d(TAG, "signInWithEmail:success")
}
}.addOnFailureListener { exception: Exception ->
when (exception.message) {
"There is no user record corresponding to this identifier. The user may have been deleted." -> // Handle error
"The password is invalid or the user does not have a password." ->// Handle error
else -> // Handle error
}
}
最佳答案
Does Firebase return any error code so I can add error handling?
当然可以。 FirebaseAuthException类包含一个名为 getErrorCode() 的方法那:
Returns an error code that may provide more information about the error.
除此之外,在上述文档中您还会发现两个非常有用的部分:
- Known Direct Subclasses:
还有:
- Known Indirect Subclasses:
因此,您始终可以根据抛出的特定异常获取特定消息。
编辑:
I was wondering is where to get a list of all error codes.
Firebase Auth 不提供完整的错误列表。链接answer ,可能被认为有点旧,因为它是在 2016 年 7 月 7 日添加的。从那时起,Firebase Authentication SDK 发生了一些变化。如果您对错误代码感兴趣,您应该检查每种类型的异常。例如,FirebaseAuthException 的已知直接子类,称为FirebaseAuthInvalidUserException 。在此类中,您可能会看到一些错误代码:
- ERROR_USER_DISABLED
- ERROR_USER_NOT_FOUND
- ERROR_USER_TOKEN_EXPIRED
- ERROR_INVALID_USER_TOKEN。
因此,您最好的选择是查看每个特定类的内部。
这不仅仅在身份验证的情况下可用,它在所有其他异常类的情况下都可用。例如,如果我们正在谈论Cloud Firestore,则相应的异常称为FirebaseFirestoreException并包含 enum带有错误代码。以下是值:
- 已中止
- ALREADY_EXISTS
- 已取消
- 数据丢失
- DEADLINE_EXCEEDED
- FAILED_PRECONDITION
- 内部
- INVALID_ARGUMENT
- NOT_FOUND
- 好的
- OUT_OF_RANGE
- PERMISSION_DENIED
- RESOURCE_EXHAUSTED
- 未经身份验证
- 不可用
- 未实现
- 未知
关于android - 如果身份验证不成功,Firebase Auth 是否会返回错误代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65984549/