Google reCaptcha Enterprise创建评估请求返回‘Request contains an invalid argument’错误求助
Google reCaptcha Enterprise创建评估请求返回‘Request contains an invalid argument’错误求助
嘿,我之前在集成reCaptcha Enterprise时也碰到过一模一样的错误,大概率是这几个地方出了问题,你可以逐一排查:
1. 前端data-action与后端expectedAction不匹配(最可能的原因)
看你的代码,前端按钮的data-action设的是submit,但后端请求里的expectedAction写的是LOGIN——这两个值必须完全一致!reCaptcha Enterprise会验证token对应的动作和你评估请求里的动作是否匹配,不匹配就会直接返回INVALID_ARGUMENT错误。
解决方法二选一就行:
- 把后端的
expectedAction改成和前端一致的submit:
$data = [ 'event' => [ 'token' => $token, 'siteKey' => RECAPTCHAKEY, 'expectedAction' => 'submit' // 和前端data-action保持一致 ] ];
- 或者把前端按钮的
data-action改成LOGIN:
<button class="g-recaptcha btn btn-primary" data-sitekey="<?php echo RECAPTCHAKEY; ?>" data-callback='onSubmit' data-action='LOGIN'><?php echo $lan->getValue('login'); ?></button>
2. 确认请求URL是否正确
reCaptcha Enterprise的评估API端点是和你的GCP项目绑定的,格式应该是:
https://recaptchaenterprise.googleapis.com/v1/projects/[你的GCP项目ID]/assessments?key=[你的API密钥]
如果你的$url变量里的项目ID、API密钥填错了,或者用了普通reCaptcha的API地址,也会触发这个错误。可以检查下GCP控制台里的项目配置,确保URL参数都正确。
3. 验证token的有效性
- 确保前端传递的
g-recaptcha-responsetoken没有被篡改,而且是新鲜生成的(reCaptcha token有效期只有2分钟,过期后也会报错)。 - 另外,确认你的siteKey是reCaptcha Enterprise的密钥,不是普通reCaptcha v2/v3的密钥,两者不通用。
你可以先试试调整action匹配的问题,这个是最常见的触发原因,应该能解决你的问题~
备注:内容来源于stack exchange,提问作者Gunnarius
相关产品推荐
相关产品推荐

