reCaptcha v3 v modálním okně

Návratový kód token expired

Pokud dostáváte při validaci reCaptcha v v3 chybovou hlášku timeout-or-duplicate jedná se o opakované odeslání se stejným tokenem, nebo příliš dlouho načtenou stránku.

Google zde nastavuje interval 2 minuty. Toto je ale příliš rychlé, pokud máte například formulář v modálním okně a náštěvník se před odesláním začte do obsahu.

Řešením je upravit javascriptový kód, aby generoval token, až když uživatel chce provést odeslání formuláře.

grecaptcha.ready(function() { document.getElementById('contact-form').addEventListener("submit", function(event) { event.preventDefault(); grecaptcha.execute('My_Site_Key', {action: 'contact'}).then(function(token) { document.getElementById("recaptchaResponse").value= token; document.getElementById('contact-form').submit(); }); }, false); });

JavaScript PHP červen 2020