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

Android Firebase OTP验证报错17499 BILLING_NOT_ENABLED求助

解决Firebase OTP验证报错17499 BILLING_NOT_ENABLED(无需开通计费账户)

问题原因

错误码17499 BILLING_NOT_ENABLED并非必须开通付费账户才能解决,通常和以下情况相关:

  • Firebase Phone Auth功能未在控制台启用
  • 项目免费额度的触发规则未正确生效
  • SHA密钥配置不完整或与测试环境不匹配

解决步骤

1. 启用Firebase Phone Auth功能

进入Firebase控制台,按以下操作确认:

  • 打开你的项目,进入Authentication > Sign-in method页面
  • 找到Phone选项,点击右侧开关启用该功能
  • 按提示完成基础配置(Spark免费计划完全支持该功能,无需绑定付费账户)

2. 确认SHA密钥配置匹配测试环境

你已添加SHA-1和SHA-256密钥,需额外检查:

  • 如果用debug包测试,要确保添加的是debug签名的SHA密钥(而非发布版密钥)
  • 密钥更新后,重新下载google-services.json文件替换到项目的app目录下

3. 用测试号码完成学习(无需真实短信)

如果只是学习验证流程,推荐使用Firebase测试号码,避免触发真实短信和计费限制:

  • 在Firebase控制台Authentication > Sign-in method > Phone页面,滚动到Test phone numbers区域
  • 添加测试号码(例如+911234567890)和对应验证码(例如123456)
  • 代码中使用该测试号码发起验证,Firebase会直接返回预设验证码,无需发送真实短信

4. 检查设备网络连接

确保测试设备能正常访问Firebase服务,避免代理、VPN或地区网络限制导致请求失败

代码优化建议

你的代码逻辑无明显问题,若上述步骤完成后仍报错,可添加详细日志定位问题:

@Override
public void onVerificationFailed(@NonNull FirebaseException e) {
    progressBar.setVisibility(View.GONE);
    buttonGetOTP.setVisibility(View.VISIBLE);
    // 打印详细错误信息便于排查
    Log.e("OTP_ERROR", "验证失败: " + e.getMessage() + ", 错误码: " + ((FirebaseAuthInvalidCredentialsException)e).getErrorCode());
    Toast.makeText(SendOTPActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show();
}

内容的提问来源于stack exchange,提问作者Manan Ka Patel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 00:00:04