reCaptcha:错误代码“无效密钥”

Jul*_*kli 5 php recaptcha

我目前使用HTML和PHP为表单实现reCaptcha。客户端解决方案可以正常工作。但是服务器端验证失败。

所以这是我的服务器端代码:

$data = array(
    "secret" => "MY_SECRET_KEY",
    "response" => $captcha_response,
    "remoteip" => $_SERVER['REMOTE_ADDR']
);
$opts = [
    "http" => [
        "method" => "POST",
        "header" => "Accept-language: en",
        "content" => http_build_query($data)
    ]
];

$context = stream_context_create($opts);

$data = json_decode(file_get_contents('https://www.google.com/recaptcha/api/siteverify', false, $context), true);
Run Code Online (Sandbox Code Playgroud)

所以现在当我转储结果时,我得到以下输出:

array(4) {
  ["success"]=>
  bool(false)
  ["challenge_ts"]=>
  string(20) "2017-06-22T13:14:50Z"
  ["hostname"]=>
  string(9) "localhost"
  ["error-codes"]=>
  array(1) {
    [0]=>
    string(12) "invalid-keys"
  }
}
Run Code Online (Sandbox Code Playgroud)

我确定响应代码将完全发送到PHP脚本。

我也在API文档中进行了搜索,但仅找到这些错误代码,而与找不到任何匹配项invalid-keys

我怎么了

Jul*_*kli 7

如此愚蠢。我从管理控制台中错误的项目中获取了密钥。我需要的错误项目未列入白名单。网站密钥和秘密密钥也不匹配,这引发了错误。localhost


小智 7

我可以确认,错误代码invalid-keys仅在使用现有但不正确的帐户或项目密钥时返回。

如果密钥无效或格式错误,invalid-input-secret将返回错误代码。

在我们的案例中,我们的Wordpress生产环境具有一个插件,该插件定义了我们使用的常量,并带有来自另一个帐户的不正确的密钥。