You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin中GoogleSignInClient登录始终返回RESULT_CANCELED问题求助

Google登录返回RESULT_CANCELED的排查与解决

常见问题及解决步骤

  • SHA-1指纹未正确配置
    这是最常见的触发原因。你需要在Google Cloud控制台的对应项目中,添加当前调试/发布版本应用的SHA-1指纹。可以通过Android Studio的Gradle > 你的项目 > Tasks > android > signingReport获取指纹,确保和Cloud控制台里的记录完全一致。

  • 应用包名不匹配
    检查Google Cloud控制台中OAuth 2.0客户端ID的包名,必须和AndroidManifest.xml里的package属性完全一致,大小写、字符都不能有差异。

  • Google Sign-In API未启用
    登录Google Cloud控制台,搜索"Google Sign-In API",确认该API处于启用状态。

  • 补充结果处理逻辑排查原因
    即便返回RESULT_CANCELED,也可以通过解析Intent信息定位具体问题。修改你的ActivityResult回调:

    private val launcher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
        if (result.resultCode == Activity.RESULT_OK) {
            val task = GoogleSignIn.getSignedInAccountFromIntent(result.data)
            try {
                val account = task.getResult(ApiException::class.java)
                textView.text = "登录成功,邮箱:${account.email}"
            } catch (e: ApiException) {
                textView.text = "登录失败:${e.message}"
            }
        } else {
            // 尝试获取取消的具体错误码
            val task = GoogleSignIn.getSignedInAccountFromIntent(result.data)
            try {
                val account = task.getResult(ApiException::class.java)
            } catch (e: ApiException) {
                textView.text = "登录取消,错误码:${e.statusCode}"
            }
        }
    }
    

    通过ApiException的statusCode可以区分具体情况,比如SIGN_IN_CANCELLED(用户主动取消)、SIGN_IN_FAILED(配置错误)等,帮助精准定位问题。

额外检查点

  • 确保设备上的Google Play服务为最新版本,旧版本可能引发登录异常。
  • 调试时使用debug签名配置,发布前需切换到release指纹并同步更新Cloud控制台的配置。

内容的提问来源于stack exchange,提问作者Roihu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 02:35:19