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

集成Google Fit API时Google Sign in请求始终失败,求助排查

排查Google Fit授权失败的关键步骤&代码优化建议

看起来你已经完成了基础配置,但Google Fit授权失败通常是几个容易忽略的细节导致的,我帮你梳理一下排查方向,顺便优化下代码逻辑:

这是绝大多数开发者会漏掉的核心步骤:

  • 登录Google Cloud Console找到你的项目,进入APIs & Services > OAuth consent screen
  • 必须填写完整的应用信息:应用名称、用户支持邮箱、开发者联系邮箱都不能空
  • 在Scopes模块,手动添加Google Fit需要的权限范围:https://www.googleapis.com/auth/fitness.activity.read(对应你请求的步数读取权限)
  • 测试阶段一定要把你的测试邮箱添加到Test users列表里,否则非测试用户(包括你自己)无法完成授权

2. 核对SHA-1密钥的一致性

  • 确保Firebase项目设置和Google Cloud Console里配置的SHA-1完全一致,debug和release环境的密钥要区分开
  • 可以用命令重新生成debug密钥的SHA-1验证:
    keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
    

3. 修复代码中的GoogleSignIn初始化逻辑

你的代码里用了GoogleSignIn.getLastSignedInAccount(this),但如果之前没有用户登录过,这个方法会返回null,直接调用requestPermissions会导致流程出错。建议修改为更稳妥的逻辑:

private fun connectToGoogleFit() {
    Log.e("GOOGLE_FIT", "google fit init")
    val fitnessOptions = FitnessOptions.builder()
        .addDataType(DataType.TYPE_STEP_COUNT_DELTA, FitnessOptions.ACCESS_READ)
        .addDataType(DataType.AGGREGATE_STEP_COUNT_DELTA, FitnessOptions.ACCESS_READ)
        .build()
    
    // 创建适配Fitness权限的GoogleSignInClient
    val googleSignInClient = GoogleSignIn.getClient(this, fitnessOptions)
    val lastSignedInAccount = GoogleSignIn.getLastSignedInAccount(this)

    if (lastSignedInAccount != null && GoogleSignIn.hasPermissions(lastSignedInAccount, fitnessOptions)) {
        Log.e("GOOGLE_FIT", "has permission")
        accessGoogleFit()
    } else {
        Log.e("GOOGLE_FIT", "no permission / no signed in account")
        // 直接启动登录授权流程,覆盖未登录/无权限两种情况
        startActivityForResult(googleSignInClient.signInIntent, GOOGLE_FIT_PERMISSIONS_REQUEST_CODE)
    }
}

4. 检查依赖版本兼容性

确保build.gradle中的Google服务依赖是最新稳定版,旧版本可能存在权限流程兼容问题:

implementation 'com.google.android.gms:play-services-fitness:21.1.0'
implementation 'com.google.android.gms:play-services-auth:20.7.0'

5. 验证设备的Google Play服务版本

测试设备上的Google Play服务必须是最新版本,旧版本可能不支持Google Fit的新授权机制,建议用户在Google Play商店更新后再测试。

如果以上步骤都排查过还是失败,可以查看Logcat中GoogleSignIn或Fitness相关的详细报错日志,里面会给出具体的失败原因(比如权限未配置、SHA-1不匹配等)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:27:42