Я пытаюсь использовать OAuth2 с API Mailchimp и следую их документации к письму, но не могу выполнить шаг 4. На этом шаге я обмениваю код, полученный на экране авторизации, на токен , Согласно документации, это можно сделать в curl следующим образом:
curl --request POST \
--url 'https://login.mailchimp.com/oauth2/token' \
--data "grant_type=authorization_code&client_id={client_id}&client_secret={client_secret}&redirect_uri={encoded_url}&code={code}" \
--include
Я попытался преобразовать это для работы на node.js, написав это:
var dataString = 'grant_type=authorization_code&client_id=' + clientid + '&client_secret=' + clientsecret + '&redirect_uri=' + encodedurl + '&code=' + url.parse(req.url, true).query.code;
var options = {
url: 'https://login.mailchimp.com/oauth2/token',
method: 'POST',
data: dataString
};
function callback(error, response, body) {
if (!error) {
console.dir(JSON.stringify(body));
}
else{
console.dir(error);
}
}
request(options, callback);
Когда я делаю request.debug = true, я вижу, что получаю ошибку 400. Сообщение, отправленное на консоль, представляет собой набор искаженных символов. Когда я использую эти же переменные и конечные точки для аутентификации через Postman, все работает нормально, поэтому проблема не в переменных или самом API.
Я не совсем уверен, что я здесь делаю неправильно. Запрос, который я делаю, кажется почти идентичным написанному в документации. Так, где я иду не так?