Flutter中如何强制触发Firebase Auth的verificationComplete回调?
Firebase Auth 手机号验证:verificationComplete 不触发及 pinput 崩溃问题解决方案
关于 verificationComplete 无法触发的问题
首先明确:verificationComplete 无法强制触发,它的触发依赖 Firebase SMS Retriever API 成功自动捕获到符合格式的验证码短信,且系统自动填充机制正常工作。以下是排查和修复步骤:
严格校验验证码短信格式
短信必须包含#开头的验证码,末尾附加你的应用 SHA-256 哈希值,示例格式:Your verification code is: 123456 FA+9qCX9VSu哈希值可通过 Firebase 控制台获取,或用 Google 提供的工具生成。格式不符合的话,Retriever API 无法识别,自然不会触发回调。
确认 SMS Retriever API 配置正确
- 在 Firebase 控制台的项目设置中,添加应用的 SHA-256 签名哈希(debug 和 release 环境的哈希都要加,否则发布后会失效)
- 确保依赖版本兼容:Flutter 项目中,
firebase_auth需使用最新稳定版,Android 原生依赖需包含com.google.android.gms:play-services-auth
检查设备自动填充权限与设置
- 开启设备的自动填充服务(路径:设置 → 系统 → 语言和输入法 → 自动填充服务)
- 部分定制 ROM 可能限制应用的短信捕获能力,可尝试动态申请
SEND_SMS和RECEIVE_SMS权限(尽管 Firebase 官方说明 Retriever API 不需要,但实际部分场景下需要)
关于 pinput 设置 smsUserConsentApi 崩溃的问题
- 不要同时混用 SMS Retriever API 和 SMS User Consent API:前者用于自动捕获触发 verificationComplete,后者需要用户手动授权验证码读取,两者逻辑冲突,这是导致崩溃的核心原因
- 将
androidSmsAutofillMethod设置为AndroidSmsAutofillMethod.smsRetrieverApi,与 Firebase 的 verificationComplete 回调逻辑匹配 - 升级 pinput 和 firebase_auth 到最新稳定版,避免版本兼容问题
- 查看崩溃时的 Logcat 日志,定位具体错误(比如权限缺失、API 初始化失败等)
内容的提问来源于stack exchange,提问作者Ricardo Edmundo Juarez Salazar
相关产品推荐
相关产品推荐

