我正在开发一个Android应用程序,并通过Firebase Auth实现了Google Login, 有时有效,有时无效. 但这不是因为代码本身,而是因为Google帐户提示的 Select 是显示 无论我做什么,它都会显示取消的结果代码:

Gif

以下是输出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()
                }
            }

Log Log.i(TAG, "onActivityResult: ${result.resultCode}")的输出:

enter image description here

这对我来说没有任何意义,而且我不知道如何修复它,因为这是我无法判断的东西

以前有人遇到过这个问题吗? 如果是这样,你是如何解决的?

推荐答案

如果您勾选result.resultCode,则为12502.

根据Google在GoogleSignInStatusCodes上提供的文档,代码12502(GoogleSignInStatusCodes.SIGN_IN_CURRENTLY_IN_PROGRESS)表示另一个登录过程已经在进行中.

enter image description here

因此,我的建议是,对于任何遇到此问题的人,即使在确保Firebase配置正确之后也是如此.

通过适当处理来解决代码中的这种情况是一个好主意.不要向用户显示错误消息,而应考虑显示警告或提供某种其他形式的反馈以指示登录过程已在进行中.


更新 1

OP刚刚编辑了问题并向日志(log)显示了他得到的内容.

RESULT_OK值为-1,Google login success值为0

所以你需要改变逻辑

if(resultCode == Activity. RECSULT_OK){

Android相关问答推荐

java.lang. IllegalState异常:CompositionLocal LifecycleOwner不存在

Jetpack编写导航库问题-条件导航

如何在点击按钮时将字符串插入到文本字段中的光标位置?

懒惰的垂直网格中盒子的重量-Jetpack组合

替换- prop -中的值(adb shell getprop)

Android-交叉引用表中的ForeignKey用于什么?

在c中更新MVVMCross中TextView的Alpha#

从包含的(复合)模块导入 Kotlin 类时,Android 应用程序模块的 build.gradle.kts 未解决的引用错误

Android 构建失败:找不到 flexbox2.0.1.aar

当 Jetpack Compose 中的第一个文本很长时,将省略号添加到第一个文本

单击按钮时不显示 Toast 消息

使用 Kotlin 在 Android 中导航时如何防止 ViewModel 被杀死?

未解决的参考:pagerTabIndicatorOffset

Jetpack Compose 动画性能问题

react 从输入中找到路径'lib/arm64-v8a/libfbjni.so'的本机2个文件

Jetpack Compose 重组竞争条件

组合 - 重新组合图像

房间创建三四表关系

Android build gradle 文件版本代码自动递增

CenterAlignedTopAppBar 滚动行为:未为参数状态传递值