我正在做一个 Android 应用程序,我已经使用 Firebase Auth 实现了 Google Login, 它有时有效,有时无效。 但这不是因为代码本身,而是因为显示了选择Google帐户提示 无论我做什么,它都会显示已取消的结果代码:
这里是输出resultCode 0的代码:
mBinding.btnSignInGoogle.setOnClickListener {
signInGoogle()
}
private fun signInGoogle() {
val signInIntent = GoogleSignIn.getClient(
this,
GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(R.string.default_web_client_id)).requestEmail().build()
).signInIntent
startForResult.launch(signInIntent)
}
startForResult =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
Log.i(TAG, "onActivityResult: ${result.resultCode}")
if (result.resultCode == Activity.RESULT_OK) {
val task = GoogleSignIn.getSignedInAccountFromIntent(result.data)
try {
val account = task.getResult(ApiException::class.java)!!
firebaseAuthWithGoogle(account.idToken!!)
} catch (e: ApiException) {
Log.w(TAG, "Google sign in failed", e)
}
} else {
// Handle the case where the result code is not RESULT_OK
Toast.makeText(this, "Google sign in was not completed.", Toast.LENGTH_SHORT).show()
}
}
这对我来说没有任何意义,而且我不知道如何解决它,因为这是我无法检查的东西
以前有人遇到过这个问题吗? 如果是这样,你是如何解决的?
根据 Google 在 GoogleSignInStatusCodes 上提供的文档,代码 12502 (GoogleSignInStatusCodes.SIGN_IN_CURRENTLY_IN_PROGRESS) 表示另一个登录过程已在进行中。
因此,我的建议是对于遇到此问题的任何人,即使在确保其 Firebase 配置正确之后也是如此。
最好在代码中通过适当的处理来解决这种情况。不要向用户显示错误消息,而是考虑显示警告或提供某种其他形式的反馈来指示登录过程已在进行中。