Google Cloud Identity Platform手机号认证API reCaptcha报错排查
解决Identity Platform手机号认证CAPTCHA_CHECK_FAILED错误
问题根源
你存在两个关键错误:
- 混淆
recaptchaSiteKey与recaptchaToken的用途:getRecaptchaParams返回的recaptchaSiteKey是用于前端加载reCAPTCHA组件的公钥,并非验证令牌;sendVerificationCode接口要求的recaptchaToken是用户完成人机验证后生成的有效凭证。 - 请求头内容类型错误:接口要求
Content-Type为application/json,你当前设置为text/plain,会导致请求体解析异常。
正确流程
- 调用
getRecaptchaParams获取recaptchaSiteKey和recaptchaStoken(后者用于部分reCAPTCHA场景配置) - 在前端页面用
recaptchaSiteKey加载reCAPTCHA v2/v3组件,引导用户完成人机验证 - 从reCAPTCHA组件获取验证通过后的
token值(这才是要传入sendVerificationCode的recaptchaToken) - 调用
sendVerificationCode接口,传入正确参数
修正后的请求示例
curl --location --request POST 'https://identitytoolkit.googleapis.com/v1/accounts:sendVerificationCode?key=[API_KEY]' \ --header 'Content-Type: application/json' \ --data-raw '{ "phoneNumber": "+923446800107", "recaptchaToken": "替换为用户完成reCAPTCHA验证后生成的令牌" }'
额外注意事项
- 确保reCAPTCHA组件配置与Identity Platform项目绑定一致
- 若为纯后端场景无法实现前端交互,可考虑使用Identity Platform服务器端验证流程,或调整项目安全验证规则(生产环境不推荐跳过人机验证)
内容的提问来源于stack exchange,提问作者Zulafqar Ali
相关产品推荐
相关产品推荐

