两个同代码库React Native应用接入Google Fit时App2授权失败怎么办?
核心原因
App2授权直接返回Authorization cancelled的核心原因就是你提到的未配置独立GCP项目、未完成Google Fit接入的OAuth校验配置。Google Fit授权流程会强校验请求方应用的包名、签名、API启用状态、scope权限配置,任意一项不匹配时,系统不会抛出明确配置错误,会统一返回用户取消授权的结果,和你现在遇到的现象完全一致。
修复步骤
按以下顺序补全App2的配置即可:
- 启用Google Fit API
你已经为App2注册了独立Firebase应用,Firebase和GCP项目是底层打通的,直接进入App2对应的GCP控制台API库,搜索「Google Fit API」手动启用即可,不需要额外新建项目。 - 配置OAuth同意屏幕
- 进入GCP控制台的OAuth同意屏幕配置页,按你的发布范围选择内部/外部用户类型
- 把代码中用到的
FITNESS_HEART_RATE_READ等Google Fit相关scope添加到允许列表 - 补全必填的应用名称、隐私政策链接、开发者联系方式等字段;如果是对外发布的正式应用,需要提交Google审核;测试阶段可以先把测试用的Google账号加到测试用户白名单,绕过审核限制
- 校验OAuth客户端凭证
- 不需要手动创建Android类型的OAuth客户端ID,Firebase会自动为你注册的Android应用生成对应凭证,你只需要核对凭证内填写的包名、SHA-1签名指纹和App2实际构建用的签名完全一致:debug包、release包对应的签名SHA-1都要添加到凭证里,缺任何一个都会导致授权失败
- 从App2对应的Firebase控制台重新下载最新的
google-services.json文件,替换到App2构建变体对应的目录下,绝对不能混用App1的配置文件
- 清理缓存重测
执行./gradlew clean清理构建缓存,卸载设备上之前安装的App2旧版本,重新打包安装后再触发授权流程。
额外排查项
如果完成以上配置后仍然授权失败,优先检查两点:
- 设备上的Google Play服务升级到最新版本,旧版本Play服务会隐藏具体配置错误,统一返回授权取消
- 确认两个构建变体的AndroidManifest.xml合并规则一致,App2没有被移除
ACTIVITY_RECOGNITION等Google Fit依赖的必要权限
你也可以在现有授权代码里补充catch逻辑,拿到底层Google Play服务返回的具体错误码,能更快定位配置问题。
内容的提问来源于stack exchange,提问作者Sharon
相关产品推荐
相关产品推荐

