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

ViewModel中Google Sign-In的credentialManager调用失败问题排查

Google Sign-In CredentialManager调用失败原因分析与排查建议

可能的核心原因

  • 两段代码的请求配置不匹配:第一段用旧版Google Sign-In API(比如GoogleSignInClient)能正常运行,第二段用CredentialManager时,可能客户端ID配置错误(比如误用Web端ID而非Android端ID),或是ID Token相关参数设置有误。
  • CredentialManager依赖的API未启用:旧版API可能无需额外配置,但CredentialManager要求GCP项目必须开启Google Identity Services API,未开启会直接触发配置错误提示。
  • 签名信息存在细微偏差:你确认SHA-1配置正确,但当前运行的构建变体(debug/release)对应的签名文件SHA-1,可能并未在GCP中配置(比如仅添加了release版本的SHA-1,却用debug包测试)。
  • CredentialManager请求参数缺失:比如未将providerIds设置为GoogleAuthProvider.PROVIDER_ID,或是依赖库版本过旧,与服务端不兼容。

排查步骤

  • 直接对比两段代码的配置细节:将可正常运行的旧代码与CredentialManager代码逐行对比,重点核对客户端ID、请求参数、依赖库版本。比如旧代码中GoogleSignInOptions使用的客户端ID,与第二段GoogleIdTokenCredential.Builder中的ID必须完全一致,大小写、字符都不能出错。
  • 检查GCP项目的API启用状态:登录GCP控制台,进入项目的「API和服务」->「已启用的API和服务」,确认Google Identity Services API处于开启状态。
  • 重新核对签名哈希信息:
    1. 执行命令keytool -list -v -keystore 你的签名文件路径,获取当前构建包的SHA-1和SHA-256哈希值。
    2. 进入GCP「凭据」->「OAuth 2.0客户端ID」对应的Android客户端条目,检查这两个哈希值是否都已添加,不要遗漏debug包默认签名(路径一般为~/.android/debug.keystore)的哈希值。
  • 校验CredentialManager请求参数:确保请求构建逻辑正确,示例如下:
    val request = CredentialRequest.Builder()
        .addCredentialProvider(GoogleIdTokenCredential.PROVIDER_ID)
        .build()
    
    注意:GoogleIdTokenCredential使用的客户端ID必须是GCP中创建的Android类型客户端ID,不能使用Web端ID。
  • 清除缓存并重装应用:卸载当前应用,清除Google Play服务的缓存,再重新安装测试,避免本地旧凭据信息干扰验证流程。
  • 深挖Logcat日志细节:过滤CredentialManager或GoogleAuth相关日志,除了28444错误码,可能会出现更具体的提示,比如「客户端ID不匹配」「签名哈希不正确」等信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 19:27:14