Firebase手机号验证API调用遇TOO_MANY_ATTEMPTS_TRY_LATER错误求助
Firebase Phone Auth 持续触发TOO_MANY_ATTEMPTS_TRY_LATER错误的解决方案
针对你调用Firebase手机号验证API时持续出现TOO_MANY_ATTEMPTS_TRY_LATER错误的问题,以下是几个排查和解决方向:
1. 手机号被长期临时封禁
Firebase的手机号验证系统会对短时间内频繁请求的手机号施加超出1小时的封禁限制。
- 先更换一个测试手机号发起请求,确认是否仅当前手机号受影响
- 如果是正式用户的手机号,可通过Firebase控制台提交解封申请:进入认证 → 手机号认证页面查看封禁列表,或直接联系Firebase支持团队申诉
2. 请求参数及身份验证错误
你的请求中存在重复使用API Key的问题:
sendVerificationCode接口仅需要在URL参数中携带API Key,无需在Authorization头中重复传入(该头用于OAuth令牌验证场景,不适用此接口)- 建议用
json_encode生成请求体,避免手动转义JSON字符串的错误
修正后的cURL代码:
$curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => 'https://identitytoolkit.googleapis.com/v1/accounts:sendVerificationCode?key=AIzaSyAqQlhpjv86*********-*************', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS => json_encode([ "phoneNumber" => "+9199*******0" ]), CURLOPT_HTTPHEADER => array( 'Content-Type: application/json' ), )); $response = curl_exec($curl); curl_close($curl); echo $response;
3. 客户端ID或App Check限制
如果你的项目配置了客户端ID白名单或启用了App Check,可能导致请求被拦截:
- 检查Firebase控制台认证 → 设置中的授权客户端ID列表,确认你使用的
x-goog-client-id已被授权 - 若无需客户端ID验证,可直接移除
x-goog-client-id请求头(该参数并非sendVerificationCode接口的必填项)
4. 服务器IP被限制
若你的服务器IP在短时间内发送了大量请求,可能被Firebase的IP封禁机制拦截:
- 尝试切换服务器IP后重新发起请求
- 检查代码逻辑,避免存在循环调用API的错误逻辑,防止持续触发限制
内容的提问来源于stack exchange,提问作者Ishant Singh
相关产品推荐
相关产品推荐

