增加ReCaptcha到期时间?

时间:2017-06-29 09:01:28

标签: javascript php jquery

如何增加Google ReCaptcha到期时间?我试过下面的一个,

  <script>
   var callback = function() {
      grecaptcha.render('id-of-render-element', {
         'sitekey': 'your-site-key',
         'expired-callback': expCallback
       });
   };
   var expCallback = function() {
      grecaptcha.reset();
   };
</script>
    <div id="id-of-render-element"></div>
<script src="https://www.google.com/recaptcha/api.js?onload=callback&render=explicit" async defer></script>

但它没有用。

2 个答案:

答案 0 :(得分:3)

这对Invisible和Checkbox版本都有用。我知道你想要&#34;增加&#34;时间,但这不是谷歌提供的选择。我只需每5分钟重启一次。

setInterval(function(){ grecaptcha.reset(); }, 5 * 60 * 1000 ); 
// just reset every 5 min

另外,设置&#34;高级&#34;您的Google Developer Console中的框滑块最少限制&#34;似乎有所帮助。

请记住新的&#34; Invisible&#34;回顾一下,除非你有额外的AJAX验证,否则你可能不需要重置或延长时间。我注意到当我使用新的&#34;隐形&#34;如果我只在首先验证表单时触发它,那么盒子永远保持良好的方法。

Q.E.D。 然后,使用此方法可以更简单地解决问题 https://developers.google.com/recaptcha/docs/invisible#auto_render

答案 1 :(得分:0)

最佳解决方案

<input type='hidden' name='recaptcha_token' id='recaptcha_token'>

<script src="https://www.google.com/recaptcha/api.js?render={{ env("GOOGLE_CAPTCHA_PUBLIC_KEY") }}"></script>

<script>
    setInterval(function () { 
        grecaptcha.ready(function() {
            grecaptcha.execute('{{ env("GOOGLE_CAPTCHA_PUBLIC_KEY") }}')    
            .then(function(token) {
                document.getElementById("recaptcha_token").value = token;
            }); 
        });
    }, 30 * 1000);
</script>