Flutter Firebase手机认证在Play Store安装包下无法发送OTP
问题根因
你未将Google Play App Signing的签名密钥指纹添加到Firebase项目配置,这是该场景下的最高发诱因。
- 你此前添加的本地release签名SHA1/SHA256,仅适配本地打包、手动安装release包的场景。当前Play Store新上架应用默认强制开启Play App Signing,你上传安装包后,Google会使用其平台托管的专属签名密钥对安装包重签名,最终用户从Play Store下载到的安装包签名,和你本地的release签名完全不一致。
- Firebase的OTP服务会校验请求来源应用的签名指纹,重签名后的线上包指纹不在你配置的信任列表中,会直接拦截OTP下发请求,无有效报错提示。
修复操作步骤
- 登录Google Play Console,进入目标应用的「设置 > 应用完整性」页面
- 在「应用签名」标签下,复制Google托管的App Signing密钥对应的SHA1、SHA256值
- 进入Firebase Console对应项目的应用设置页,把上一步复制的两个签名指纹添加到应用的签名配置列表中
- 下载更新后的
google-services.json配置文件,替换项目工程中对应位置的旧配置文件 - 重新打包上传至Play Console,发布到内部测试轨道验证功能即可
补充注意:如果你使用了Play的内部应用共享功能测试包体,需要同时把「内部应用共享」板块下的签名密钥SHA1、SHA256也添加到Firebase配置中,否则内部共享链接安装的测试包同样会出现OTP发送失败问题。
常见踩坑提示
- 不要以Android Studio中
signingReport任务打印的release签名指纹作为线上包的有效签名,只要开启Play App Signing,该指纹仅对本地手动安装的release包生效。 - Firebase签名配置同步延迟通常在2分钟以内,配置更新后替换新的配置文件重新打包即可,不需要等待过长时间。
内容的提问来源于stack exchange,提问作者kandy kane
相关产品推荐
相关产品推荐

