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
相关产品推荐
相关产品推荐

