Firebase短信验证onVerificationCompleted自动填码失效求助
解决Firebase Auth短信验证码自动填充(onVerificationCompleted)失效问题
核心问题是你的应用短信缺少SHA-256哈希码,导致Android系统无法识别该短信属于你的应用,因此无法触发自动填充和onVerificationCompleted回调。按以下步骤配置即可解决:
1. 获取应用SHA-256指纹
方式一:Android Studio操作
- 打开右侧Gradle面板,找到你的app模块 → 展开
Tasks→android→ 双击运行signingReport - 在控制台输出中找到
SHA-256对应的字符串(debug和release环境的都要记录)
方式二:命令行操作
- Debug签名(默认):
密码输入keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkeyandroid即可查看 - Release签名:
输入签名文件密码查看keytool -list -v -keystore 你的签名文件路径.jks -alias 你的签名别名
2. 在Firebase控制台添加哈希码
- 打开Firebase控制台,进入你的项目 → 左侧菜单栏选择
Authentication→ 切换到Sign-in method标签页 - 找到
Phone认证选项,下拉到Android应用配置区域,点击添加指纹,把刚才获取的SHA-256哈希码添加进去(debug和release的都要加)
3. 更新google-services.json
- 回到Firebase控制台的
项目设置页面,下载最新的google-services.json文件 - 替换你Flutter项目中
android/app目录下的旧文件
4. 清理重建项目
- 终端执行:
flutter clean flutter run - 或在Android Studio中执行
Build → Clean Project,再Build → Rebuild Project
5. 验证效果
重新发送验证码,短信末尾会自动带上11位的应用哈希码(格式类似:%LOGIN_CODE% is your verification code for %APP_NAME%. 12345678901),此时系统会自动识别并触发onVerificationCompleted完成自动登录。
额外注意事项
- 测试时一定要用添加了对应SHA-256哈希的签名包,debug包用debug哈希,release包用release哈希
- 部分国产ROM可能有自定义短信规则,建议先在原生Android系统验证功能正常后再适配国产机型
内容的提问来源于stack exchange,提问作者autumn
相关产品推荐
相关产品推荐

