【问题标题】:"Error: Invalid ReCAPTCHA client id" when executing an invisible captcha执行不可见的验证码时出现“错误:ReCAPTCHA 客户端 ID 无效”
【发布时间】:2017-11-18 21:12:07
【问题描述】:

我正在尝试在 Wordpress 网站的 HTML 表单中实现 Google 的 Invisible reCAPTCHA。

head

首先,我有设置回调并将表单的提交事件绑定到验证的脚本:

jQuery(document).ready(function() {
  var valid = false;

  window.recaptchaOkay = function(token) {
    valid = true;
    jQuery('#cadastro').submit();
  };

  document.getElementById('cadastro').addEventListener('submit', function validate(event) {
    if (valid) {
      return true;
    }

    var cap = document
        .getElementById('cadastro')
        .querySelector('.g-recaptcha');
    grecaptcha.execute(cap);

    event.preventDefault();
    return false;
  });
});

然后,我完全按照文档中的说明加载 reCAPTCHA 脚本:

<script src="https://www.google.com/recaptcha/api.js" async defer></script>

body

这是我正在使用的表格:

<form action="https://example.com/" method="post" id="cadastro">
    <div
        class="g-recaptcha"
        data-sitekey="6Lc0jC4UAAAAANlXbqGWNlwyW_e1kEB89zLTfMer"
        data-callback="recaptchaOkay"
        data-size="invisible"
        id="cadastro-captcha">
    </div>
    <button type="submit" id="cadastro-submit">Enviar</button>
</form>

会发生什么

我填了表格,提交了,抛出如下错误(与grecaptcha.execute一致):

Error: Invalid ReCAPTCHA client id: [object HTMLDivElement]

还尝试将cadastro-captcha ID 作为字符串直接传递给该函数(例如grecaptcha.execute("cadastro-captcha")),但会发生相同的错误(显然,ID 不同)。等效地,如果我不传递任何参数,则会发生相同的错误,除了它引用undefined

【问题讨论】:

  • 你试过打电话给grecaptcha.execute()吗? (没有任何参数)
  • @Black 是的。我只是得到同样的错误,undefined 作为客户端 ID。
  • 目前您将整个 div 作为参数传递,这不是它应该的方式。您应该传递 div 的 id,或者什么都不传递(然后它将只使用创建的第一个小部件)。
  • @Black 我在问题中说过。仅传递 ID 也是如此。

标签: javascript wordpress recaptcha invisible-recaptcha


【解决方案1】:

试试这个:--

grecaptcha.reset() 方法接受一个可选的 widget_id 参数,如果未指定,则默认为创建的第一个小部件。 grecaptcha.render() 方法为每个创建的小部件返回一个 widget_id。所以你需要存储这个 id,并用它来重置那个特定的小部件:

var widgetId = grecaptcha.render(container);
grecaptcha.reset(widgetId);

如果有更多信息,请阅读 google recaptcha docs:-- https://developers.google.com/recaptcha/docs/display#js_api

【讨论】:

  • "从 grecaptcha.render() 方法返回一个 widget_id" ?
  • 你为什么要链接那个网址? 没有信息如何创建或返回小部件 id...遗憾的是
猜你喜欢
  • 2021-04-17
  • 1970-01-01
  • 2014-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多