reCAPTCHA v2, reCAPTCHA v2

На этой странице объясняется, как отображать и настраивать виджет reCAPTCHA v2 на вашей веб-странице.

Чтобы отобразить виджет, вы можете:

См. «Конфигурации» , чтобы узнать, как настроить виджет. Например, вы можете указать язык или тему виджета.

См. раздел «Проверка ответа пользователя» , чтобы проверить, успешно ли пользователь решил CAPTCHA.

Автоматически отображать виджет reCAPTCHA

Самый простой способ отобразить виджет reCAPTCHA на вашей странице — включить необходимый ресурс JavaScript и тег g-recaptcha . Тег g-recaptcha представляет собой элемент DIV с именем класса g-recaptcha и ключом вашего сайта в атрибуте data-sitekey :

<html>
  <head>
    <title>reCAPTCHA demo: Simple page</title>
    <script src="https://www.google.com/recaptcha/api.js" async defer></script>
  </head>
  <body>
    <form action="?" method="POST">
      <div class="g-recaptcha" data-sitekey="your_site_key"></div>
      <br/>
      <input type="submit" value="Submit">
    </form>
  </body>
</html>

Скрипт должен загружаться по протоколу HTTPS и может быть включен из любой точки страницы без ограничений.

Явное отображение виджета reCAPTCHA

Отсрочку рендеринга можно выполнить, указав функцию обратного вызова при загрузке и добавив параметры в ресурс JavaScript.

  1. Укажите функцию обратного вызова onload . Эта функция будет вызвана после загрузки всех зависимостей.

    <script type="text/javascript">
      var onloadCallback = function() {
        alert("grecaptcha is ready!");
      };
    </script>
    
  2. Вставьте ресурс JavaScript, задав для параметра onload имя функции обратного вызова onload, а для параметра renderexplicit .

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

    Когда ваш обратный вызов будет выполнен, вы можете вызвать метод grecaptcha.render из API JavaScript .

Конфигурация

Параметры ресурса JavaScript (api.js)

Параметр Ценить Описание
загружать Необязательный. Имя вашей функции обратного вызова, которая будет выполнена после загрузки всех зависимостей.
оказывать явный
загружать
Необязательный. Следует ли отображать виджет явно. По умолчанию используется onload, при котором виджет будет отображаться в первом найденном теге g-recaptcha .
гл См. коды языков Необязательный. Заставляет виджет отображаться на определенном языке. Автоматически определяет язык пользователя, если он не указан.

Атрибуты тега g-recaptcha и параметры grecaptcha.render

атрибут тега g-recaptcha параметр grecaptcha.render Ценить По умолчанию Описание
ключ сайта данных ключ сайта Ваш ключ сайта.
тема данных тема темный свет свет Необязательный. Цветовая тема виджета.
размер данных размер компактный нормальный нормальный Необязательный. Размер виджета.
данные-табиндекс табиндекс 0 Необязательный. Tabindex виджета и задачи. Если другие элементы на вашей странице используют tabindex, его следует установить, чтобы облегчить навигацию пользователя.
обратный вызов данных перезвонить Необязательный. Имя вашей функции обратного вызова, выполняемой, когда пользователь отправляет успешный ответ. Токен g-recaptcha-response передается вашему обратному вызову.
обратный вызов с истекшим сроком действия данных обратный вызов с истекшим сроком действия Необязательный. Имя вашей функции обратного вызова, выполняемой по истечении срока действия ответа reCAPTCHA и необходимости повторной проверки пользователя.
обратный вызов-ошибка данных обратный вызов ошибки Необязательный. Имя вашей функции обратного вызова, которая выполняется, когда reCAPTCHA обнаруживает ошибку (обычно при подключении к сети) и не может продолжаться до тех пор, пока подключение не будет восстановлено. Если вы укажете здесь функцию, вы несете ответственность за информирование пользователя о необходимости повторной попытки.

JavaScript API

Метод Описание
грекапча. оказывать (
контейнер,
параметры
)
Отображает контейнер как виджет reCAPTCHA и возвращает идентификатор вновь созданного виджета.
контейнер
HTML-элемент для отображения виджета reCAPTCHA. Укажите либо идентификатор контейнера (строку), либо сам элемент DOM.
параметры
Объект, содержащий параметры в виде пар ключ=значение, например {"sitekey": "your_site_key", "theme": "light"}. См. параметры grecaptcha.render .
грекапча. перезагрузить (
opt_widget_id
)
Сбрасывает виджет reCAPTCHA.
opt_widget_id
Необязательный идентификатор виджета, по умолчанию используется первый созданный виджет, если он не указан.
грекапча. получитьОтвет (
opt_widget_id
)
Получает ответ для виджета reCAPTCHA.
opt_widget_id
Необязательный идентификатор виджета, по умолчанию используется первый созданный виджет, если он не указан.

Примеры

Явный рендеринг после обратного вызова при загрузке

<html>
  <head>
    <title>reCAPTCHA demo: Explicit render after an onload callback</title>
    <script type="text/javascript">
      var onloadCallback = function() {
        grecaptcha.render('html_element', {
          'sitekey' : 'your_site_key'
        });
      };
    </script>
  </head>
  <body>
    <form action="?" method="POST">
      <div id="html_element"></div>
      <br>
      <input type="submit" value="Submit">
    </form>
    <script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit"
        async defer>
    </script>
  </body>
</html>

Явный рендеринг для нескольких виджетов

<html>
  <head>
    <title>reCAPTCHA demo: Explicit render for multiple widgets</title>
    <script type="text/javascript">
      var verifyCallback = function(response) {
        alert(response);
      };
      var widgetId1;
      var widgetId2;
      var onloadCallback = function() {
        // Renders the HTML element with id 'example1' as a reCAPTCHA widget.
        // The id of the reCAPTCHA widget is assigned to 'widgetId1'.
        widgetId1 = grecaptcha.render('example1', {
          'sitekey' : 'your_site_key',
          'theme' : 'light'
        });
        widgetId2 = grecaptcha.render(document.getElementById('example2'), {
          'sitekey' : 'your_site_key'
        });
        grecaptcha.render('example3', {
          'sitekey' : 'your_site_key',
          'callback' : verifyCallback,
          'theme' : 'dark'
        });
      };
    </script>
  </head>
  <body>
    <!-- The g-recaptcha-response string displays in an alert message upon submit. -->
    <form action="javascript:alert(grecaptcha.getResponse(widgetId1));">
      <div id="example1"></div>
      <br>
      <input type="submit" value="getResponse">
    </form>
    <br>
    <!-- Resets reCAPTCHA widgetId2 upon submit. -->
    <form action="javascript:grecaptcha.reset(widgetId2);">
      <div id="example2"></div>
      <br>
      <input type="submit" value="reset">
    </form>
    <br>
    <!-- POSTs back to the page's URL upon submit with a g-recaptcha-response POST parameter. -->
    <form action="?" method="POST">
      <div id="example3"></div>
      <br>
      <input type="submit" value="Submit">
    </form>
    <script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit"
        async defer>
    </script>
  </body>
</html>