web-dev-qa-db-fra.com

Erreur: aucun client reCAPTCHA n'existe (reCAPTCHA v3)

J'ai intégré reCAPTCHA v3 dans l'une de mes formes. En charge, il y a un jeton produit et un logo google captcha dans le coin inférieur droit. Mais lorsque je soumets le formulaire, dans la console, une erreur s'affiche, "Erreur: aucun client reCAPTCHA n'existe". De plus, il semble qu'aucune donnée ne soit extraite par "g-recaptcha-response" et $ _POST ["g-recaptcha-response"] reste vide.

Voici l exemple de code:

<script type="text/javascript">
    var ReCaptchaCallbackV3 = function() {
        grecaptcha.ready(function() {
            grecaptcha.execute("site_key").then(function(token) {
                console.log("v3 Token: " + token);
            });
        });
    };
</script>

<script src="https://www.google.com/recaptcha/api.js?onload=ReCaptchaCallbackV3&render=site_key"></script>

Il ne produit aucune "réponse g-recaptcha" lorsque le formulaire est soumis.

Je ne sais pas grand chose sur google reCaptcha. J'ai suivi la documentation fournie par eux et utilisé correctement un site et une clé secrète.

Quelqu'un peut-il me dire où pourrait être le problème et quelle est la solution possible?

6
Sourov Amin

Avez-vous essayé de charger le script avant d'envoyer la demande?

<script src="https://www.google.com/recaptcha/api.js?onload=ReCaptchaCallbackV3&render=site_key"></script>
<script type="text/javascript">
    var ReCaptchaCallbackV3 = function() {
        grecaptcha.ready(function() {
            grecaptcha.execute("site_key").then(function(token) {
                console.log("v3 Token: " + token);
            });
        });
    };
</script>
1
Stephen Tracey

Cela se produit également dans Recaptcha 2 avant que l'utilisateur n'interagisse avec lui. J'ai donc un bouton de soumission qui déclenche une fonction JS qui vérifie la valeur de recaptcha. Pour résoudre le problème sans client, j'ai fait:

try {
   data["reCaptcha"] = grecaptcha.getResponse();
} catch (err) {
   data["reCaptcha"] = "";
}

L'objet de données est ensuite envoyé à un script principal qui valide la recaptcha. Le back-end vérifie également que le champ est vide.

1
Elendurwen

Lorsque j'ai rencontré ce problème avec reCAPTCHA v3, c'est parce que je ne lui ai pas transmis la clé de site correcte.

1
Piquan

J'ai eu ce problème car j'appelais grecaptcha.reset(); alors qu'il n'y avait pas de Recaptcha actif sur le site

grecaptcha.reset();
recaptcha__en.js:507 Uncaught Error: No reCAPTCHA clients exist.
    at MX (recaptcha__en.js:507)
    at Object.Zn [as reset] (recaptcha__en.js:514)
    at <anonymous>:1:13
0
SSpoke