Flutter中Firebase手机号认证移除验证码验证问题求助
Flutter Firebase手机号认证仍弹出验证码界面的解决办法
排查与修复步骤
1. 核对Firebase的SHA-256配置
- 打开Firebase控制台,进入项目设置 > 你的Android应用 > SHA证书指纹,确认以下三类SHA-256都已准确添加:
- 开发环境:执行
keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android(Windows用户路径替换为C:\Users\<你的用户名>\.android\debug.keystore)获取的debug指纹。 - 发布密钥:从你本地的签名密钥库生成的指纹,命令是
keytool -list -v -keystore <你的签名文件路径> -alias <密钥别名>。 - Google Play上传密钥:在Play控制台应用签名页面复制的上传密钥指纹,注意要完整复制,别漏字符或带空格。
- 开发环境:执行
- 添加完成后点击保存,然后重新下载
google-services.json,替换项目android/app目录下的旧文件。
2. 确认签名与配置匹配
- 如果你用App Bundle发布到Play商店,必须把Play自动生成的应用签名密钥SHA-256也加到Firebase里,而不是只加你本地的发布密钥。
- 开发测试时,先卸载设备上的旧应用,再重新
flutter run,确保用的是debug密钥签名的安装包。
3. 检查SafetyNet服务状态
- Firebase手机号自动验证依赖Android的SafetyNet,要确保:
- 你的Google Cloud项目已启用SafetyNet API(在Cloud控制台搜索启用即可),且Firebase的服务账号有访问权限。
- 测试设备支持SafetyNet:部分老设备或定制ROM无法通过验证,会强制跳手动输入。可以用SafetyNet验证工具测一下设备兼容性。
4. 升级插件与核对Android配置
- 把
firebase_auth插件更到最新版,在pubspec.yaml里更新依赖:firebase_auth: ^最新版本号 - 检查Android配置:
- 项目级
build.gradle里要包含:dependencies { classpath 'com.google.gms:google-services:4.3.15' // 或更高兼容版本 } - 应用级
build.gradle末尾要加:apply plugin: 'com.google.gms.google-services'
- 项目级
5. 分环境测试
- 开发环境:用debug包测试,确认网络能正常访问Google服务,debug指纹配置正确。
- 发布环境:打签名APK/App Bundle,上传到Play内部测试渠道,用测试账号下载验证自动登录是否生效。
内容的提问来源于stack exchange,提问作者Gautam Bhateja
相关产品推荐
相关产品推荐

