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

Flutter应用Firebase OTP针对科威特号码报错的解决求助

解决Flutter Firebase OTP针对科威特地区号码的17006/operation-not-allowed错误

可能的原因及解决步骤

1. 检查Firebase Auth的地区访问限制

进入Firebase控制台 -> Authentication -> 登录方式 -> 选择电话号码,查看「允许的国家/地区」设置:

  • 确保科威特(Kuwait,国家代码+965)在允许列表中,未被排除
  • 若设置为「仅允许部分国家/地区」,确认科威特已添加;若为「允许所有国家/地区」则跳过此检查

2. 验证短信服务的地区覆盖与配置

Firebase短信发送依赖第三方运营商,部分地区需额外配置:

  • 进入Firebase控制台 -> 项目设置 -> 短信标签页,查看是否有针对科威特地区的提示(如需要启用特定服务、完成企业验证)
  • 确认项目已完成短信服务的必要验证流程,避免因地区政策被限制

3. 确保所有构建变体的SHA证书指纹已添加

即使更新过SHA1/SHA256,可能遗漏了debug/release环境的指纹:

  • 进入Firebase控制台 -> 项目设置 -> 你的应用 -> 添加指纹
  • 分别添加debug和release构建的SHA1、SHA256指纹,覆盖所有使用的构建环境
  • 添加后重新下载google-services.json(Android)或GoogleService-Info.plist(iOS)并替换到项目中

4. 确认科威特号码的格式正确性

科威特国家代码为+965,需确保号码拼接完全合规:

  • 检查代码中countryCode是否带+号(如"+965"而非"965")
  • 确保用户输入的号码无多余前缀、空格或特殊字符,最终格式应为+965XXXXXXX(科威特号码为8位数字)

5. 检查Firebase短信配额与限制

新Firebase项目可能有短信发送配额限制,特定地区可能受限更严格:

  • 进入Firebase控制台 -> 使用情况和账单 -> 配额
  • 查找「Firebase Authentication」下的短信相关配额,确认是否超出科威特地区的发送限额
  • 若配额不足,可按流程申请提升配额(需符合Firebase政策要求)

6. 启用reCAPTCHA验证辅助

部分地区因安全策略要求必须启用reCAPTCHA:

  • 进入Firebase控制台 -> Authentication -> 登录方式 -> 电话号码
  • 确保「启用reCAPTCHA验证」选项已开启(默认可能开启,但需确认)
  • 此设置可绕过部分地区的短信发送限制,提升验证成功率

代码小优化(非错误原因,但建议调整)

你的sendOTP方法中,codeSent回调里的print(verID)永远不会执行,因前面有return语句,可调整为:

codeSent: (String verificationId, int? resendToken) {
  print("OTP Sent!");
  verID = verificationId;
  print(verID); // 移至return之前
  return;        
},

内容的提问来源于stack exchange,提问作者tyro

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 01:38:17