Flutter Firebase手机号认证问题:Play商店部署后授权失败
问题描述
开发的Flutter应用以Firebase为后端,开发环境和测试版发布模式下运行正常,但部署至Google Play商店后,用户进行手机号登录/注册时触发以下错误:
发生错误,请重试。此应用未获授权使用Firebase Authentication。请验证Firebase控制台中已配置正确的包名、SHA-1和SHA-256。[传递了play_integrity_token,但Firebase控制台中未注册匹配的SHA-256。请确保此应用的packagename/sha256已在Firebase控制台中注册。]
已在Firebase控制台添加所有获取到的SHA-1和SHA-256值,并更新了项目中的google-services.json文件,但问题仍未解决。(附相关截图:Firebase控制台SHA配置页、Play商店SHA值页、Play商店上传SHA值页)
解决步骤
核对Play应用签名证书的SHA-256值
若使用Play应用签名(App Signing by Google Play),Google会替换上传APK/AAB的签名,此时必须将Play商店提供的应用签名证书SHA-256添加到Firebase,而非本地上传密钥的SHA值。
操作路径:Play控制台 → 目标应用 → 应用签名 → 复制“应用签名证书”下的SHA-256,确认该值已添加至Firebase控制台「项目设置」→「应用」→「SHA证书指纹」列表中。清理缓存并重新构建
- 在Firebase控制台移除冗余的SHA值,仅保留正确的Play签名SHA值,随后重新添加一次该值。
- 下载最新的
google-services.json,替换Flutter项目android/app目录下的旧文件。 - 执行
flutter clean清理项目缓存,重新构建发布版本。
确认Play Integrity API配置
错误提示涉及play_integrity_token,需完成以下检查:- 进入Google Cloud控制台 → 目标项目 → API和服务 → 启用Play Integrity API。
- 验证Firebase Authentication的手机号登录配置中,已开启Play Integrity集成,且包名与SHA值匹配。
检查包名一致性
确保Firebase控制台注册的包名与Play商店发布的应用包名完全一致(注意包名的字符匹配,Firebase会严格校验)。等待配置生效
Firebase控制台的SHA值更新通常需要10-30分钟才能全局生效,添加后不要立即测试,等待一段时间再验证功能。
内容的提问来源于stack exchange,提问作者Adeel Nazim

