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

Laravel调用Firebase sendVerificationCode接口报MISSING_CLIENT_IDENTIFIER错误

解决Firebase发送OTP时的MISSING_CLIENT_IDENTIFIER错误

错误原因

MISSING_CLIENT_IDENTIFIER错误是因为Firebase的accounts:sendVerificationCode接口需要验证请求的客户端合法性,仅提供API Key和手机号不足以通过验证,必须补充客户端标识符参数。

解决方案

方法1:添加OAuth客户端ID到请求体

  1. 登录Firebase控制台,进入项目设置 -> 通用标签页
  2. 在你的应用(比如Web应用)列表中,找到OAuth 客户端ID(注意不是Web API密钥)
  3. 修改请求体,新增client_id字段:
$phone = $request->get('phone');
$apiKey = 'your-web-api-key';
$clientId = 'your-oauth-client-id'; // 从Firebase控制台获取

try {
    $client = new Client();
    $response = $client->post('https://identitytoolkit.googleapis.com/v1/accounts:sendVerificationCode?key=' . $apiKey, [
        'json' => [
            'phoneNumber' => "+".$phone,
            'client_id' => $clientId // 新增客户端ID字段
        ]
    ]);

    $data = json_decode($response->getBody(), true);
    // 保存返回的sessionInfo,用于后续验证码验证
} catch (\Exception $e) {
    // 捕获并处理请求错误
}

方法2:使用reCAPTCHA Token(Web应用推荐)

如果是Web端发起的请求,更安全的方式是先通过reCAPTCHA验证用户身份,再将获取到的token传入请求:

  1. 前端集成reCAPTCHA v2或v3,获取验证token
  2. 在请求体中加入recaptchaToken字段替代client_id:
$response = $client->post('https://identitytoolkit.googleapis.com/v1/accounts:sendVerificationCode?key=' . $apiKey, [
    'json' => [
        'phoneNumber' => "+".$phone,
        'recaptchaToken' => $request->get('recaptcha_token') // 前端传入的reCAPTCHA验证token
    ]
]);

验证码验证接口实现

发送OTP成功后会返回sessionInfo,使用该参数调用accounts:verifyPhoneNumber接口完成验证:

$sessionInfo = $request->get('session_info'); // 发送OTP时返回的session信息
$code = $request->get('otp_code');
$apiKey = 'your-web-api-key';

try {
    $client = new Client();
    $response = $client->post('https://identitytoolkit.googleapis.com/v1/accounts:verifyPhoneNumber?key=' . $apiKey, [
        'json' => [
            'sessionInfo' => $sessionInfo,
            'code' => $code
        ]
    ]);

    $data = json_decode($response->getBody(), true);
    // 验证成功,可获取idToken等信息用于用户身份认证
} catch (\Exception $e) {
    // 处理验证码错误或请求失败的情况
}

注意事项

  • 确保手机号格式正确,必须包含国际区号(如+8613xxxxxxxxx)
  • 确认Firebase控制台中已启用电话认证服务
  • API Key使用Firebase项目的Web API密钥,不要与OAuth客户端ID混淆

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 15:04:58