invalid-input-Geheimnis für google ' s recaptcha-api
Ich versuche, recaptcha auf meiner website. Nodejs-server mit dem express-framework. Die Website ist nicht gehostet werden, ich bin noch auf Arbeit, es lokal. Auf der homepage, nachdem der Benutzer sein info, ein Konto zu erstellen, und löst das recaptcha, sende ich die Ergebnisse
$("#g-recaptcha-response").val()
auf dem server. Und auf meinem server,
https.get("https://www.google.com/recaptcha/api/siteverify?secret=" + SECRET + "&response=" + key, function(res) {
var data = "";
res.on('data', function (chunk) {
data += chunk.toString();
});
res.on('end', function() {
try {
var parsedData = JSON.parse(data);
console.log(parsedData);
callback(parsedData.success);
} catch (e) {
callback(false);
}
});
});
wo der Schlüssel ist die Antwort und GEHEIMNIS ist der geheime Schlüssel, den Sie dir geben. Ich erklärte
eine variable GEHEIMNIS und Speicherung der geheimen Schlüssel als string in es.
Jedes einzelne Zeit, die für die
console.log(parsedData);
Er sagt
{ success: false, 'error-codes': [ 'invalid-input-secret' ] }
Ich kopiert und eingefügt, der geheime Schlüssel, wie könnte es ungültig sein. Es sollte nur zeigen diesen Fehler, wenn "Die geheimen parameter ist ungültig oder fehlerhaft ist", wie er sagt, auf Ihre website. Ich folgte diesem tutorial.
- Nicht das Geheimnis, beinhalten keine "spezielle" Charaktere, die möglicherweise haben eine definierte Bedeutung in einer URL? (Wie Fragezeichen oder kaufmännische und-oder nicht-ASCII-Zeichen) Vielleicht brauchen Sie nur zu URL-Kodieren Sie den Wert richtig ein?
- das Geheimnis enthält einige Unterstriche _, wie würde ich das URL-Kodieren Sie den Wert?
- Nee, sollte kein problem sein. Aber ein Blick auf die Dokumentation, die Sie im Zusammenhang mit, er sagt, es muss eine POST-Anfrage, in der Erwägung, dass Sie dabei sind, eine gerade BEKOMMEN.
- Ich habe gerade kopiert und eingefügt, was ich sah auf dieser website (dem tutorial), und er verwendet eine bekommen. Ich habe versucht, ihn zu ersetzen, aber es hat einige Fehler. Brauche ich für das hosting meiner website jetzt für diese Arbeit, weil ich bin nicht, ich bin gerade dabei alles auf meinem lokalen server.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich folgte dem tutorial zu und dann stieß in den gleichen Fehler, Sie haben hier berichtet. Suchen Sie genau auf die Abbildung in der tutorial es zeigt
Senden Sie eine GET-Anforderung mit diesen Parametern
Prüfung und Google reCaptcha website es sagt
Senden einer POST-Anforderung mit diesen Parametern
Ich bin gespannt, ob Google änderte seine Meinung über die POST anstelle von GET oder der screenshot in dem tutorial ist aus einer anderen Quelle.
Egal, ich habe gezwickt version von code im tutorial-POST-request (code unten verwendet querystring - Modul), siehe unten:
Ich wollte auch noch hinzufügen, dass remoteip Feld ist optional, man kann aber auch passieren, dass der Wert auch, wenn Sie das möchten. Um dies zu tun, müssen Sie zum abrufen der remoteIpAddress von connection-Objekt, oder aktivieren Sie einfach Vertrauen proxy auf Ihre app, wie unten gezeigt:
und übergeben Sie dann die ip-Adresse der verifyRecaptcha und der Aufruf sieht wie folgt:
Müssen Sie dann ändern Sie die post_params zu gehören remoteip Feld wie folgt:
app.enable('trust proxy');
ermöglichtreq.ip
undreq.ips
was ist ein array von ip-Adressen. Für mehr info auf dem erhalten der ip-Adresse von Anfrage zu sehen, diese SO Frage.Wenn Sie entwickeln und Sie bekommen satt mit allen kniffligen berühmt und die meisten ärgerlich Straßennamen reCaptcha, dann empfehle ich Ihnen, verwenden Sie den test
Site
undSecret keys
zur Verfügung gestellt von Google zu überschreiben, captcha lösen, um die Entwicklung zu beschleunigen. Sehen hierDies ist wirklich doof, und ich kann nicht glauben, ich Verschwendete so viel Zeit auf ihn, aber anstatt die variable GEHEIMNIS, ich habe gerade meine secret-key in die url und es funktionierte.