Flutter Android端Firebase Phone Auth验证失败问题求助
Flutter Android端Firebase手机验证失败(iOS正常)解决方案
核心错误定位
从日志里能明确两个关键问题:
18002 Invalid PlayIntegrity token; app not Recognized by Play Store—— Play完整性验证不通过,商店无法识别你的应用API_KEY_ANDROID_APP_BLOCKED—— API密钥被拦截,权限校验失败
分步解决步骤
1. 修复Play Integrity验证失败
- 换对SHA值:如果你的应用用了Google Play应用签名,别再用本地签名的SHA值了!去Play Console的「应用签名」页面,把那里的SHA-1和SHA-256复制到Firebase项目设置的「应用签名」板块中。
- 启用Play Integrity API:登录Google Cloud Console,搜索「Play Integrity API」并启用该服务,未开启的话必然验证失败。
- 发布应用到Play商店:哪怕是内部测试版本也行,从未在Play商店上架过的应用,Play Integrity不会通过验证。
2. 解决API密钥被拦截问题
- 检查API密钥限制:找到Google Cloud Console中对应你的API密钥(和
google-services.json里的current_key一致):- 「应用限制」:添加正确的应用包名+所有用到的SHA-1(Play签名、本地debug/release签名都要加),少一个都可能触发拦截。
- 「API限制」:必须包含
Identity Toolkit API和Play Integrity API,既不要设成“不限制API”,也不能漏加必要服务。
- 更新google-services.json:修改完Firebase里的SHA值后,重新下载json文件替换项目中的旧文件,执行
flutter clean && flutter pub get后重新编译应用。 - 清理冗余API密钥:项目里只保留Firebase提供的API密钥,删掉其他无关密钥,避免冲突导致拦截。
3. 补充排查点
- ReCaptcha配置检查:日志显示ReCaptcha流也失败了,去Google Cloud Console查看ReCaptcha设置,确保已添加应用包名且服务处于启用状态。
- 清除应用缓存:测试前清除应用的缓存和数据,避免旧配置干扰验证流程。
- 重置测试号码:虽然你提到测试号码可用,还是去Firebase Auth里重新添加一遍测试号码,确保配置未过期。
内容的提问来源于stack exchange,提问作者maxwell
相关产品推荐
相关产品推荐

