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

Flutter应用health包3.0.3对接Google Fit选账号后返回授权失败

health 3.0.3 版本 Google Fit 授权静默返回 false 的排查清单

你当前使用的 health: ^3.0.3 属于较早版本,对接的是旧版 Google Fit REST 接口,并非谷歌后续推出的 Health Connect,常见的选完账号直接关闭弹窗、授权返回false的问题可按以下顺序逐一核对:

  • 核对 Google 服务控制台的 OAuth 配置匹配度
    • 必须保证控制台注册的 Android OAuth 客户端的应用签名 SHA1,和当前调试/运行的Flutter应用的签名SHA1完全一致(包含调试签名、正式发布签名),SHA1不匹配是最常见的静默授权拒绝诱因
    • OAuth 客户端绑定的应用包名,必须和 Android 端配置的 applicationId 完全一致,不存在大小写差异、后缀补全/缺失的问题
    • 对应控制台项目内必须手动开启 Google Fit API,未开启API的状态下所有权限请求都会被直接拒绝,不会弹出明确错误提示
  • 核对 Android 端Manifest与权限配置
    • 需在 AndroidManifest.xml 的权限声明块中,补充对应数据类型的读取权限:
      <uses-permission android:name="android.permission.FITNESS_ACTIVITY" />
      <uses-permission android:name="android.permission.FITNESS_LOCATION" />
      
      缺失该类权限声明时,授权流程会在选择完Google账号后被系统直接拦截,返回权限值为false的结果
    • 若应用开启了代码混淆,需确认混淆规则已保留 com.google.android.gms 包下的所有类,避免相关Google Fit依赖类被裁剪导致流程中断
  • 核对代码逻辑适配
    • health 3.0.3 的授权流程依赖前置的Google账号登录校验,你当前提供的授权逻辑直接实例化HealthFactory后就发起权限请求,没有在前置流程中完成Google账号的基础登录校验,是常见的选完账号流程中断的诱因
    • 核对申请的权限范围(计步、步行跑步距离)是否和控制台OAuth配置中申请的权限范围匹配,权限范围不匹配时不会弹出明确错误,只会静默返回授权拒绝
  • 排查辅助方式
    • 授权返回false时,可通过logcat过滤包含 "Health"、"Google Fit" 关键字的系统日志,静默拒绝的场景下,日志中会明确标注具体的拒绝原因,无需仅靠业务层的布尔返回值定位问题

注:该插件3.0.3版本已停止维护,长期开发建议评估升级至支持Health Connect的新版本,规避谷歌接口调整带来的兼容性问题


内容的提问来源于stack exchange,提问作者bulgarian-beast

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.30 07:54:02