Невидимая рекапча - ключ сайта не загружен? - PullRequest
0 голосов
/ 18 октября 2018

Обновление, потому что я изменил реализацию на что-то (несколько) более успешное.

Я пытаюсь реализовать Invisible 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'
});

Когда моя форма нарисована, я тогда вызываюфункция рендеринга:

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

Когда появляется форма, он появляется над кнопкой «Отправить» с помощью кнопки «Отправить».

В моей функции отправки я выполняю некоторую проверку формы,и затем «выполнить» reCaptcha:

grecaptcha.execute(recaptcha_id);

И затем продолжить с моей отправки.До сих пор, как только я увидел вызов reCaptcha («выбрать изображения с витрины»), в этот момент значение g-recaptcha-response было вставлено в мою отправку формы, и я вижу его в параметрах, переданных моему PHPfunction.

Но большую часть времени я не вижу проблемы, и в параметре g-recaptcha-response ничего нет, поэтому моя проверка PHP не удалась.Пара вопросов:

1) Мое предположение о том, что вызов не появляется постоянно, состоит в том, что логика Google требует его только тогда, когда «условия правильные».Если это так, что мне делать, если он не отображается, и в этот момент параметр g-recaptcha-response не имеет значения - я просто игнорирую его в этой точке, предполагая, что никакое значение не означает, что все в порядке?

2) Есть ли какой-нибудь способ «вызвать» вызов, чтобы показать его, хотя бы для того, чтобы я почувствовал себя лучше во всей работе, и для проверки моей обработки ответа?

3) Я пытался позвонить grecaptcha.getResponse(recaptcha_id) после grecaptcha.execute(recaptcha_id), но это ничего не возвращает.Мне было бы легче / лучше обработать reCaptcha в моем клиенте.

Любые ответы приветствуются.Я могу повторить это как новый «Вопрос», так как этот вопрос уже давно.

...