新的ReCaptcha(不可见)无法正常工作

时间:2017-03-19 23:04:56

标签: recaptcha invisible-recaptcha

我正在尝试实现新的隐形reCaptcha,但它无法正常工作。

首先,事件艰难我用“隐形”选项创建了一个新密钥,更改了我的应用程序中的密钥,当我查看我的控制台时,我可以看到这个请求:

  

https://www.google.com/recaptcha/ API2 /锚?K = .....

我认为这不是正确的api,对吧?

导入部分的代码如下:

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

根据文件......这是正确的。

其次,我选择将验证码放在div中(根据文档确定):

<div id="captchaSignup" class="g-recaptcha" data-size="invisible" data-badge="inline"></div>

我也使用render函数来声明回调和site-key:

grecaptcha.render(document.getElementById('captchaSignup'), { 'sitekey' : '...', 'callback' : function(response) {$rs.validCaptcha=response;$s.$apply()} });

这可以作为验证码解决方案,但不是隐形的,因为它仍然显示框。我知道我也必须使用执行功能,但由于我仍然看到这个盒子,我想我还没有进入那个阶段......有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:6)

如果是“隐形”重新接收,grecaptcha.render() api会选择名为inherit的可选第三个布尔参数,默认为false。如果其值指定为true,则只有recaptcha使用.g-recaptcha元素上的现有data- *属性才能获得render()选项中未指定的参数,否则会将参数视为缺失。

由于您没有使用true值传递此参数,因此它永远不会读取您在HTML元素上的data-size="invisible"值,从而继续将其呈现为可见的重新接收。

试试这个:

grecaptcha.render(document.getElementById('captchaSignup'), {
                    'sitekey' : '...',
                    'callback' : function(response) { ... }
                  }, true);       // <-- this is the change. Pass "true" here