使用回调将用户登录到Kotlin中的Firebase的经典方法是:
FirebaseAuth.getInstance().signInWithCredential(credential).addOnCompleteListener {
if(it.isSuccessful) {
Toast.maketext("Login successful", Toast.LENGTH_SHORT).show()
val authResult = it.result
// Do other stuff
} else {
Toast.maketext("Login failed", Toast.LENGTH_SHORT).show()
// Handle failure
}
}
使用Play服务Kotlin Couroutines,可以将其简化为:
CoroutineScope(Dispatchers.IO).launch {
try {
val authResult = FirebaseAuth.getInstance().signInWithCredential(credential).await()
Toast.maketext("Login successful", Toast.LENGTH_SHORT).show()
// Do other stuff
} catch (e: Exception) {
}
}
现在我很困惑,在哪里处理失败。我本可以在catch块中完成此操作,但是catch块会捕获所有异常。那么我怎么知道哪个异常是由于任务不成功引起的。
本文档没有提到任何这些情况,我找不到任何详细解释此部分的资料。
查看signInWithCredential的文档。它可以产生三种不同类型的异常,但是它们都是FirebaseAuthException的子类。
您可以:
try {
// do sign in
}
catch (e: FirebaseAuthException) {
}
或者您可以单独捕获它们:
try {
// do sign in
}
catch (e: FirebaseAuthInvalidUserException) {
}
catch (e: FirebaseAuthInvalidCredentialsException) {
}
catch (e: FirebaseAuthUserCollisionException) {
}
try {
// do sign in
}
catch (e: Exception) {
if (e is FirebaseAuthException) {
// handle auth exceptions
}
else {
// handle other exceptions
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句