Flutter集成Firebase短信验证码报错:Problem retrieving SafetyNet Token: 7
解决Flutter Firebase手机号OTP的SafetyNet Token错误(代码7)
一、能否绕过SafetyNet校验?
可以,但仅建议在测试环境使用。生产环境依赖SafetyNet/Play Integrity保障账号安全,不建议禁用。
二、测试环境禁用SafetyNet的方法
在初始化FirebaseAuth时添加如下配置,即可直接跳过SafetyNet校验发送OTP:
FirebaseAuth.instance.setSettings( appVerificationDisabledForTesting: true, );
三、生产环境错误排查与修复
如果要在正式环境解决这个错误,逐一检查以下几点:
- 确认Firebase控制台的Android应用中,已添加所有环境的SHA指纹:包括debug和release版本的SHA-1、SHA-256,不要漏加。
- 去Google Cloud Console搜索并启用Play Integrity API,确保你的项目已开启该服务。
- 核对应用包名:Firebase控制台注册的包名要和你Flutter项目的
android/app/build.gradle里的applicationId完全一致,大小写也不能错。 - 测试网络环境:部分网络会屏蔽Google服务,导致无法获取Token,切换到移动数据或稳定的海外网络重试。
- 检查Play Integrity集成:确认应用已关联Google Play Console,且Firebase控制台完成了Play Integrity的配置(比如上传签名证书)。
- Debug版本验证:确保debug keystore的SHA指纹已添加到Firebase,且debug构建的应用是用该keystore签名的。
四、额外修复步骤
如果以上都没问题,试试刷新配置文件并清理项目缓存:
- 从Firebase控制台重新下载
google-services.json,替换到Android项目的app目录下。 - 执行以下命令清理Flutter缓存:
flutter clean flutter pub get
内容的提问来源于stack exchange,提问作者Daniel loaiza
相关产品推荐
相关产品推荐

