Google Recaptcha V3 - идентификатор виджета при загрузке капчи через URL - PullRequest
0 голосов
/ 23 декабря 2018

Я использую Recaptcha V3 на своем сайте, и я не смог найти правильный способ сброса токена, если мой запрос не удался.

Следуя документации, для загрузки рекапчи мне нужно включитьследующий скрипт на моей странице:

<script src='https://www.google.com/recaptcha/api.js?render=MY_KEY'></script>

Также я привязываю маркер капчи к полю, чтобы проверить на моем бэкэнде, когда клиент решит отправить электронное письмо:

    grecaptcha.ready(function() {
        grecaptcha.execute('MY_KEY', {
            action : 'homepage'
        }).then(function(token) {
            $("#recaptcha").val(token);
        });
    });

Таким образом, у меня есть в основном два шага:

  1. Проверка капчи
  2. Отправка электронной почты

Если во время второго шага произойдет какая-либо ошибка,Мне не удалось найти способ сбросить текущую капчу на странице, так как она была уже подтверждена, если я попробую снова, она больше не действительна.

Я пробовал grecaptcha.reset(), но без widgetId появляется следующее сообщение: Uncaught Error: No reCAPTCHA clients exist.

Как получить идентификатор виджета при рендеринге через скрипт?

1 Ответ

0 голосов
/ 24 декабря 2018

Как я понимаю из Recaptcha V3, вам нужно снова вызвать execute, попробуйте сделать это следующим образом

let createNewToken = () => {
        grecaptcha.ready(function() {                   
            grecaptcha.execute('code', {action: 'homepage'}).then(function(token) {
                 console.log(token);
            });
         });        
}
...