You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter集成Firebase手机验证时OTP无法发送到手机如何解决

排查解决步骤

  • 先明确测试手机号的规则:你在Firebase控制台配置的测试手机号,本身就不会触发真实短信发送,只能用你绑定的固定测试OTP登录,这是官方设计的正常逻辑,不需要修复。
  • 检查Firebase项目计费状态:未升级到Blaze付费计划的Firebase新项目,绝大多数地区的真实手机号短信发送配额为0,直接无法发送OTP。你可以先升级到Blaze计划(有免费额度,正常测试用量不会产生费用)再测试。
  • 核对安卓端签名配置:
    • 把你调试环境、正式环境的SHA1、SHA256证书指纹全部录入Firebase控制台的安卓应用配置中
    • 重新下载google-services.json文件,替换到安卓项目的/app目录下,完全清理编译缓存后重新打包运行
  • 确认手机号输入格式:调用verifyPhoneNumber时传入的手机号必须带国家码前缀,例如中国手机号需要写成+8613xxxxxxxxx,格式错误会导致Firebase识别失败,无法下发短信。你可以先硬编码一个符合格式的真实非测试手机号验证,排除输入问题。
  • 补全配置和缺失逻辑:
    • 在AndroidManifest.xml中添加短信相关权限:
      <uses-permission android:name="android.permission.RECEIVE_SMS" />
      <uses-permission android:name="android.permission.READ_SMS" />
      
    • 调用verifyPhoneNumber时指定区域参数,解决日志中的X-Firebase-Locale为空警告,例如:
      await FirebaseAuth.instance.setLanguageCode("zh-CN");
      // 再调用verifyPhoneNumber方法
      
    • 检查Firebase控制台身份验证的设置页,确认电话验证开关已开启,且没有限制你当前测试手机号所属的国家/地区发送权限。
  • 排查代码冗余问题:你给出的代码中Main.dart和loginPage.dart存在完全重复的LoginScreen类,确认实际运行的代码没有逻辑冲突即可,该问题不影响短信下发。

内容的提问来源于stack exchange,提问作者J.Koriya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 00:09:02