Flutter Android正式版选账户后无法弹出OAuth 2.0验证界面授权步数数据共享
Flutter health包Google Fit release版授权失败排查思路
高频配置问题排查
- 验证Android端混淆规则配置
release版本默认开启R8代码混淆,若未配置保留规则,谷歌服务、health包相关类被混淆会导致授权回调链路断裂,弹窗无报错直接关闭。需在android/app/proguard-rules.pro文件中添加如下保留规则:
-keep class com.google.android.gms.** { *; } -keep class com.google.fitness.** { *; } -keep class cachet.plugins.health.** { *; }
- 核对签名指纹是否匹配
若你通过Google Play渠道分发应用且开启了Google Play官方签名服务,谷歌会自动替换应用签名,此时谷歌云后台填写的本地打包签名不生效,需前往Google Play控制台「应用完整性」页面获取谷歌生成的SHA-1指纹,更新到谷歌云OAuth2客户端ID的签名配置中。 - 检查多环境配置一致性
确认android/app/src/main/res/values/strings.xml(或release对应环境的配置文件)中填写的OAuth客户端ID为release版本对应的值,避免出现debug配置正确、release配置缺失或填写错误的情况。 - 核对授权scope声明
确认谷歌云OAuth同意屏幕中已经添加了所有应用用到的健康数据权限对应的scope,未声明的敏感scope在release版本会被谷歌直接拦截。 - 核对测试用户列表配置
未完成谷歌敏感权限验证时,只有添加到谷歌云OAuth同意屏幕「测试用户」列表内的账号才可正常授权,未加入列表的账号会触发未验证提示,不会直接关闭弹窗。如果你的测试账号未加入列表,补充添加后再测试。
问题定位方法
打可调试的release安装包,在Android Studio Logcat中过滤OAuth、Health、GoogleFit关键词,查看授权失败返回的错误码:
- 返回12501错误基本可判定为签名、客户端ID不匹配问题
- 返回12500错误一般为OAuth配置、scope声明问题
验证流程影响说明
未完成谷歌敏感权限验证不会导致授权弹窗直接关闭,仅会对非测试用户触发「应用未通过谷歌验证」的提示弹窗,因此当前问题与验证进度无关,优先排查前面的配置项即可。
内容的提问来源于stack exchange,提问作者Bryce Richards
相关产品推荐
相关产品推荐

