Firebase Auth短信验证码请求失败(错误码17499、39)求助
Firebase短信认证错误码17499&39排查方案
错误码含义
- 错误码
17499:Firebase内部服务级错误,触发原因包括后端请求超时、短信配额耗尽、区域服务故障,或客户端请求格式不符合要求。 - 错误码
39:客户端侧认证流程异常,常见于设备Google Play服务版本过低、应用签名配置缺失、设备无法正常连接Firebase服务等场景。
排查步骤
1. Firebase控制台配置校验
- 确认Phone sign-in认证方式已在Firebase控制台的Authentication -> Sign-in method中启用。
- 检查短信配额:进入Firebase控制台的Usage and Billing -> Quotas,查看Auth服务的短信发送配额是否已用尽。
- 补全应用签名指纹:在Firebase控制台的项目设置 -> 应用 -> Android应用中,添加debug和release版本的SHA-1、SHA-256指纹,缺失签名会导致认证请求被拦截。
2. Android客户端配置补全
- 更新Google Play服务:确保测试设备上的Google Play Services为最新版本,旧版本会导致Firebase Auth接口调用失败。
- 完善Manifest权限:除基础网络权限外,需添加以下权限:
同时确认SMS Retriever API对应的广播接收器已正确配置在Manifest中。<uses-permission android:name="com.google.android.gms.permission.RECEIVE_SMS" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> - 验证Firebase初始化:确保Flutter项目中已正确初始化
firebase_core,应用启动时调用Firebase.initializeApp()。
3. 服务状态与区域检查
- 查看Firebase官方状态页面,确认所在区域的Auth服务无故障。
- 测试跨区域设备:若怀疑区域限制,更换其他区域的真实设备测试,或检查项目的Firebase区域设置是否支持短信服务。
4. 额外验证点
- 使用真实设备测试:Android模拟器可能存在Google服务或短信接收的兼容性问题,优先用真实设备验证。
- 检查电话号码格式:调用
verifyPhoneNumber时需使用带国际区号的完整号码(如+8613xxxxxxxxx),格式错误会触发请求失败。 - 查看Auth日志:在Firebase控制台的Authentication -> Logs中查看具体错误详情,日志会提供比客户端错误码更具体的失败原因。
内容的提问来源于stack exchange,提问作者Ziyad godil
相关产品推荐
相关产品推荐

