Z tego artykułu dowiesz się, jak włączyć i dostosować niewidoczny reCAPTCHA na swojej stronie internetowej.
Aby wywołać niewidoczną usługę reCAPTCHA, wykonaj jedną z tych czynności:
- Automatycznie powiąż wyzwanie z przyciskiem lub
- programowo powiązać wyzwanie z przyciskiem.
- Automatyczne wywoływanie wyzwania
Aby dowiedzieć się, jak dostosować niewidzialną reCAPTCHA, zobacz sekcję Konfiguracje. Możesz na przykład określić język lub lokalizację plakietki.
Aby sprawdzić, czy użytkownik poprawnie rozwiązał CAPTCHA, zapoznaj się z artykułem Weryfikowanie odpowiedzi użytkownika.
Automatyczne wiązanie wyzwania do przycisku
Najprostszym sposobem użycia niewidocznego widżetu reCAPTCHA na stronie jest uwzględnienie niezbędnego zasobu JavaScriptu i dodanie kilku atrybutów do przycisku HTML. Wymagane atrybuty to nazwa klasy „g-recaptcha”, klucz witryny w atrybucie data-sitekey i nazwa funkcji zwracającej JavaScript, która obsługuje wypełnienie pola Captcha w atrybucie data-callback.
<html>
  <head>
    <title>reCAPTCHA demo: Simple page</title>
     <script src="https://www.google.com/recaptcha/api.js" async defer></script>
     <script>
       function onSubmit(token) {
         document.getElementById("demo-form").submit();
       }
     </script>
  </head>
  <body>
    <form id="demo-form" action="?" method="POST">
      <button class="g-recaptcha" data-sitekey="your_site_key" data-callback="onSubmit">Submit</button>
      <br/>
    </form>
  </body>
</html>
Skrypt musi być wczytywany z użyciem protokołu HTTPS i może być uwzględniony w dowolnym miejscu na stronie bez ograniczeń.
Automatycznie powiąż wyzwanie z przyciskiem lub wywołaj wyzwanie.
Opóźnienie wiązania można uzyskać, określając funkcję wywołania zwrotnego onload i dodając parametry do zasobu JavaScript. Działa to tak samo jak zwykłe zadanie reCAPTCHA.
wywołać wyzwanie programowo.
Aby wywołać weryfikację reCAPTCHA programowo, należy wyrenderować wyzwanie w elemencie div z atrybutem data-size="invisible" i wywołać metodę execute.
- Utwórz element div za pomocą parametru - data-size="invisible".- <div class="g-recaptcha" data-sitekey="_your_site_key_" data-callback="onSubmit" data-size="invisible"> </div>
- Wywołaj grecaptcha.execute z metody JavaScript. - grecaptcha.execute();- Po wykonaniu wywołania zwrotnego możesz wywołać metodę - grecaptcha.renderza pomocą JavaScript API.
Konfiguracja
Parametry zasobu JavaScript (api.js)
| Parametr | Wartość | Opis | 
|---|---|---|
| onload | Opcjonalnie: Nazwa funkcji wywołania zwrotnego, która ma zostać wykonana po wczytaniu wszystkich zależności. | |
| render | explicit onload | Opcjonalnie: Określa, czy widżet ma być renderowany jawnie. Wartość domyślna to onload, co powoduje renderowanie widżetu w pierwszym znalezionym tagu g-recaptcha. | 
| hl | Zobacz kody języków. | Opcjonalnie: Wymusza renderowanie widżetu w określonym języku. Automatycznie wykrywa język użytkownika, jeśli nie został określony. | 
Atrybuty tagu g-recaptcha i parametry grecaptcha.render
| Atrybut tagu g-recaptcha | Parametr grecaptcha.render | Wartość | Domyślny | Opis | 
|---|---|---|---|---|
| data-sitekey | sitekey | Twój klucz witryny. | ||
| data-badge | odznaka | śródtekstowy w prawym dolnym rogu | bottomright | Opcjonalnie: Zmień położenie plakietki reCAPTCHA. Opcja „wstawione” umożliwia umieszczenie go za pomocą kodu CSS. | 
| data-size | rozmiar | niewidoczne | Opcjonalnie: Służy do tworzenia niewidocznego widżetu powiązanego z elementem div i wykonywanego programowo. | |
| data-tabindex | tabindex | 0 | Opcjonalnie: Indeks karty wyzwania. Jeśli inne elementy strony korzystają z indeksu tabindex, powinien być on ustawiony tak, by ułatwić użytkownikom nawigację. | |
| data-callback | wywołanie zwrotne | Opcjonalnie: Nazwa funkcji wywołania zwrotnego wykonywanej, gdy użytkownik prześle pomyślną odpowiedź. Token g-recaptcha-responsejest przekazywany do funkcji wywołania zwrotnego. | ||
| data-expired-callback | expired-callback | Opcjonalnie: Nazwa funkcji wywołania zwrotnego, która jest wykonywana, gdy odpowiedź reCAPTCHA wygaśnie i użytkownik musi ponownie przejść weryfikację. | ||
| data-error-callback | error-callback | Opcjonalnie: Nazwa funkcji wywołania zwrotnego, która jest wykonywana, gdy reCAPTCHA napotka błąd (zwykle połączenie sieciowe) i nie będzie kontynuować, dopóki połączenie nie zostanie przywrócone. Jeśli określisz tutaj funkcję, musisz poinformować użytkownika, że powinien spróbować ponownie. | ||
| pojedyncze | fałsz | Opcjonalnie: Aby właściciele wtyczek nie mogli zakłócać działania istniejących instalacji reCAPTCHA na stronie. Jeśli to pole ma wartość true (prawda), instancja reCAPTCHA będzie należeć do osobnego obszaru identyfikatorów. | 
JavaScript API
| Metoda | Opis | 
|---|---|
| grecaptcha.render(kontener, parametrów odziedzicz) | Renderuje kontener jako widżet reCAPTCHA i zwraca identyfikator nowo utworzonego widżetu. kontener Element HTML służący do renderowania widżetu reCAPTCHA. Określ identyfikator kontenera (ciąg znaków) lub sam element DOM. parameters Obiekt zawierający parametry w postaci par klucz-wartość, np. {"sitekey": "your_site_key", "theme": "light"}. Zobacz parametry grecaptcha.render. odziedziczone Użyj istniejących atrybutów danych-* w elemencie, jeśli nie jest określony odpowiedni parametr. Parametry mają pierwszeństwo przed atrybutami. | 
| grecaptcha.execute( | wywołać weryfikację reCAPTCHA za pomocą kodu; Używany, jeśli niewidoczna reCAPTCHA znajduje się w elemencie div zamiast w przycisku. opt_widget_idIdentyfikator opcjonalnego widżetu. Jeśli nie zostanie określony, domyślnie zostanie wybrany pierwszy utworzony widget. | 
| grecaptcha.reset( | Resetuje widżet reCAPTCHA. opt_widget_idIdentyfikator opcjonalnego widżetu. Jeśli nie określono inaczej, domyślnie jest ustawiany pierwszy widżet. | 
| grecaptcha.getResponse( | Pobiera odpowiedź z widżetu reCAPTCHA. opt_widget_idIdentyfikator opcjonalnego widżetu. Jeśli nie określono inaczej, domyślnie jest ustawiany pierwszy widżet. | 
Przykłady
Bezpośrednie renderowanie po wywołaniu zwrotnym przy załadowaniu
<html>
  <head>
    <title>reCAPTCHA demo: Explicit render after an onload callback</title>
    <script>
        var onSubmit = function(token) {
          console.log('success!');
        };
        var onloadCallback = function() {
          grecaptcha.render('submit', {
            'sitekey' : 'your_site_key',
            'callback' : onSubmit
          });
        };
    </script>
  </head>
  <body>
    <form action="?" method="POST">
      <input id="submit" type="submit" value="Submit">
    </form>
    <script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit"
        async defer>
    </script>
  </body>
</html>
Wywoływanie testu reCAPTCHA po weryfikacji po stronie klienta.
<html>
  <head>
  <script>
    function onSubmit(token) {
      alert('thanks ' + document.getElementById('field').value);
    }
    function validate(event) {
      event.preventDefault();
      if (!document.getElementById('field').value) {
        alert("You must add text to the required field");
      } else {
        grecaptcha.execute();
      }
    }
    function onload() {
      var element = document.getElementById('submit');
      element.onclick = validate;
    }
  </script>
  <script src="https://www.google.com/recaptcha/api.js" async defer></script>
  </head>
  <body>
    <form>
      Name: (required) <input id="field" name="field">
      <div id="recaptcha" class="g-recaptcha"
          data-sitekey="_your_site_key_"
          data-callback="onSubmit"
          data-size="invisible"></div>
      <button id="submit">submit</button>
    </form>
    <script>onload();</script>
  </body>
</html>
