reCaptcha back-end nodejs



我只想使用nodejs验证recaptcha,并且在简单的调用中遇到困难!

我继续遇到错误missing-input-responsemissing-input-secret


使用request尝试1:

var request = require('request');
...
request.post(
    'https://www.google.com/recaptcha/api/siteverify',
    {
        secret: 'MY_SECRET',
        response: recaptcha
    },
    function (error, response, body) {
        // guard
        if (error) {
            callback(false);
            return;
        }
        if (response.statusCode == 200) {
            console.log("BODY", body)
            if (body.success) {
                callback(true);
            } else {
                callback(false);
            }
        }
    }

使用https尝试2:

var post_req;
var requestBody = {
    secret: 'MY_SECRET',
    response: recaptcha
};
post_req = https.request('https://www.google.com/recaptcha/api/siteverify', function (res) {
    res.setEncoding('utf8');
    res.on('data', function (chunk) {
        console.log('CHUNK: ', chunk);
    });
});
post_req.on('error', function (e) {
    console.log('ERROR: ', e);
    callback(false);
});
post_req.write(requestBody);
post_req.end();

结果是:

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

最终找到了解决方案。看来问题类型的问题。

这有效:

var request = require('request');
...
request.post(
    'https://www.google.com/recaptcha/api/siteverify',
    {
        form: {
            secret: 'MY_SECRET',
            response: recaptcha
        }
    },
    function (error, response, body) {
        if (!error && response.statusCode == 200) {
            console.log(body)
        }
    }
);