每当我试图通过将类型转换为"Firebase AuthException"从从task.getException()接收的异常中获取errorCode时,它会给出错误,错误为java.lang.ClassCastException: com.google.firebase.FirebaseException cannot be cast to com.google.firebase.auth.FirebaseAuthException,并且总是返回 GetMessage方法出现[INVALID_LOGIN_CREDICATIONS]错误 一百零二

以下是导致错误的代码.

String errorCode = ((FirebaseAuthException) task.getException()).getErrorCode();

我提供了无效的凭据只是为了获得例外,但我没有得到确切的例外,如如果密码是错误的,邮箱是不正确的,或用户找不到,等等.

我正在使用Android Studio Giraffe,2022.3.1 Patch 2

下面是我正在使用的依赖项

implementation("com.google.firebase:firebase-auth:22.1.2")
implementation("com.google.firebase:firebase-database:20.2.2")
implementation("com.google.firebase:firebase-storage:20.2.1")

推荐答案

当您使用以下代码行时:

String errorCode = ((FirebaseAuthException) task.getException()).getErrorCode();

task.getException()返回的对象类型为FirebaseException.try 将此类对象强制转换为类型为 FirebaseAuthException的对象确实会产生以下错误:

无法将java.lang.ClassCastException:com.google.Firebase.Firebase异常转换为com.google.firebase.auth.FirebaseAuthException

为什么?因为您不能将超类的对象强制转换为子类的对象.请注意,继承关系是Firebase AuthException扩展Firebase Exception,而不是相反.其中Firebase Exception类是超类,而Firebase AuthException是子类.

还请注意,只有在Firebase控制台中禁用了通过startActivityForSignInWithProvider方法登录,或者传递的提供程序配置不正确时,才会引发Firebase AuthException异常.

如果您想了解有关该异常的更多详细信息,则应考虑拨打getCause()getMessage()printStackTrace().

Edit:

当涉及到这样的错误时:

INVALID_LOGIN_Credentials

那么也请看下面的答案:

Java相关问答推荐

Gmail Javi API批量处理太多请求

基本时态运算的ISO-8601周数据表示法

Jlink选项&-strie-ative-Commands";的作用是什么?

现场观看Android Studio中的变化

将关键字与正文中的_Allowed匹配,但带有__Signing可选后缀

如何从日志(log)行中删除包名称?

带有Health Check的Spring Boot BuildPack打破了本机映像构建过程

如何在Cosmos DB(Java SDK)中增加默认响应大小

解析方法";javax/imageio/metadata/IIOMetadata.getAsTree(Ljava/lang/String;)Lorg/w3c/dom/Node时加载约束冲突

使用htmlunit和java单击按钮

如何在Spring Boot中创建可以将值传递给配置的&Enable&Quot;注释?

如何在EL处理器中定义带有命名空间的变量?

在JDK Flight Recorder中只记录单个线程

在应用程序运行时更改LookAndFeel

JavaFX复杂项目体系 struct

持续时间--为什么在秒为负数的情况下还要做额外的工作?

Java返回生成器的实现

使用原子整数的共享计数器并发增量

Springboot应用程序无法识别任何@RestController或@Service,我认为@Repository也无法识别

在不带instanceof或switch的java中记录模式