Неверный ответ и секрет ввода при проверке Google reCaptcha - PullRequest
0 голосов
/ 14 февраля 2019

Я действительно изо всех сил пытаюсь получить успешный ответ, когда делаю почтовый запрос к API Google Recaptcha.Я получаю следующий ответ:

{
  "success": false,
  "error-codes": [
    "invalid-input-response",
    "invalid-input-secret"
  ]
}

Я посмотрел на reCAPTCHA - коды ошибок: «missing-input-response», «missing-input-secret» при проверке ответа пользователя (отсутствующие детали в POST) и следовали за ответом как можно точнее, но безуспешно.

Вот мой файл ниже:

var request = require('request');

module.exports = {
  verifyCaptcha: function(req, res) {

    var secret = 'SECRET_KEY';
    var response = JSON.stringify(req.body.response);
    request({
        url: 'https://www.google.com/recaptcha/api/siteverify',
        method: 'POST',
        headers: { "Content-Type": "application/x-www-form-urlencoded" },
        body: `secret=${secret}&response=${response}`,
    }, function (err, response, body) {
        if (err) {
            res.status(500).send({
                error: "Could not verify captcha"
            });
        } else {
            res.status(200).send({
                message: body
            });
        }
    });
  },
}

Если у кого-то есть решение этой проблемыпожалуйста, дайте мне знать!

1 Ответ

0 голосов
/ 14 февраля 2019

Вам нужно добавить удаленный IP-адрес пользователя.

var user_ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
request({
    url: 'https://www.google.com/recaptcha/api/siteverify',
    method: 'POST',
    headers: { "Content-Type": "application/x-www-form-urlencoded" },
    body: `secret=${secret}&response=${response}&remoteip=${user_ip}`}...

Еще одна вещь, которую я вижу, что вы не используете шаблонный литерал, вы должны изменить кавычки на `вместо '.

ИЛИ, Вы должны использовать готовый модуль для reCaptcha, как этот:

https://www.npmjs.com/package/recaptcha

...