【问题标题】:reCaptcha: error code "invalid-keys"reCaptcha:错误代码“无效键”
【发布时间】:2022-04-03 06:11:49
【问题描述】:

我目前正在使用 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);

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

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"
  }
}

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

我也在 API 文档中进行了搜索,但只找到了这些 error codes 并且没有与 invalid-keys 匹配的内容。

我做错了什么?

【问题讨论】:

  • 它会给出错误invalid-keysInvalid site key
  • 感谢您的评论@Narayan。我得到invalid-keys。这是我从 Google 获得的回复中的原始转储。

标签: php recaptcha


【解决方案1】:

真傻。我从admin console 获取了错误项目的密钥。我需要的错误项目未列入白名单localhost。此外,公共站点密钥和秘密密钥不匹配(但都单独有效)。

【讨论】:

  • 感谢您的信息。似乎他们仍然应该在他们的文档中列出错误代码(他们没有),并且还提供更好的错误消息。
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-23
    • 1970-01-01
    • 2015-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-20
    相关资源
    最近更新 更多