我正在编写一些 Kotlin 类来使用 Firebase 电子邮件/密码登录来登录应用程序。目前的功能是:
fun loginWithFirebase(email : String, password : String)
{
setInProgress(true)
FirebaseAuth.getInstance().signInWithEmailAndPassword(email, password)
.addOnSuccessListener {
UiUtil.showToast(this, "Logged in successfully")
setInProgress(false)
startActivity(Intent(this, MainActivity::class.java))
finish()
}
.addOnFailureListener{
UiUtil.showToast(applicationContext, it.localizedMessage?: "Login failed, something went wrong")
setInProgress(false)
}
}
我想添加一个try/catch来捕获signInWithEmailAndPassword中的异常,例如在这个问题中,但是这个语法很棘手,我很难弄清楚在哪里放置try/catch块,这样它就不会中断成功和失败的听众。
我知道告诉用户他们只是用户名错误或密码错误是一个坏主意,而且我并没有尝试禁用 Firebase 反用户枚举措施。我想保留这些。
谢谢!
我想添加一个try/catch来捕获signInWithEmailAndPassword的异常,例如在这个问题
中
使用监听器时不需要添加try/catch。如果使用电子邮件和密码登录的操作失败,则会触发 onFailure(Exception e) 方法。此方法有一个类型为 Exception 的参数。然后您可以调用 getMessage() 查看实际的错误消息。
除此之外,链接问题中的代码是JavaScript,它具有不同的语法。但在 Kotlin 代码中,不需要这样做,除非您使用 Kotlin 协程并且等待结果。请检查几天前提供的答案: