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
相关产品推荐
相关产品推荐

