隐形Recaptcha-网站密钥未加载?

时间:2018-10-18 18:56:20

标签: javascript invisible-recaptcha

正在更新,因为我已将实现更改为某种(某种程度上)更成功。

我正在尝试在我们的系统中实现“隐形Recaptcha”。我们正在使用动态生成的表单,因此,我走了以编程方式调用挑战的途径。我有以下代码来获取API:

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

就在绘制表格之前,我要输入验证码div

form.fields.push({
    html: '<div id="g-recaptcha-div" class="g-recaptcha" data-sitekey="<mykey>" data-callback="myCallback" data-size="invisible"></div>',
    type: 'html'
});

绘制表单后,我将调用render函数:

recaptcha_id = grecaptcha.render(
    'g-recaptcha-div',
    {
        'data-callback': _settings.form.submit
    }
);

出现表单时,他的“受reCAPTCHA保护”徽标框显示在我的提交按钮上方。

在我的Submit函数中,我进行了一些表单验证,然后“执行” reCaptcha:

grecaptcha.execute(recaptcha_id);

然后继续我的提交。到目前为止,就在我看到reCaptcha挑战(“用店面挑选图像”)后,此时g-recaptcha-response值已插入到表单提交中,并且在传递给我的{ {1}}功能。

但是,大多数情况下,我看不到挑战,PHP参数中没有任何内容,因此我的g-recaptcha-response验证失败。几个问题:

1)我对挑战不会一直出现的假设是Google逻辑仅在“条件合适”时才要求它。如果是这种情况,当没有显示该参数时我该怎么办,此时PHP参数没有值-假设没有值意味着可以,我此时只是忽略它?

2)有什么方法可以“迫使”挑战出现,甚至只是让我对整个工作过程感觉更好,并测试我对响应的处理方式?

3)我尝试过在g-recaptcha-response之后调用grecaptcha.getResponse(recaptcha_id),但是没有返回任何内容。对我来说,在客户端中处理reCaptcha会更容易/更好。

任何答案表示赞赏。由于这个问题已经存在了一段时间,因此我可以将其重新提交为新的“问题”。

0 个答案:

没有答案