这类似于以下问题:Mailchimp API login returning "bad request"
我正在重新发布我的结果,因为该问题的解决方案并没有解决我的问题。当我使用自己生成的API密钥时,我的应用程序工作正常,但当我尝试使用令牌进行验证时,我得到了400响应以下内容:
参考#7.c2f0660.1429044353.139e2e94
我正在使用带有Express.js 4.x的Node.js,以及以下验证码:
function getLogin(key,id,callback){ console.log('mailchimp login');
var currentDomain = 'http://xxxxxxx.com/api/mailchimp/redirect/redirect';
var translatedDomain = encodeURIComponent(currentDomain);
var secret = 'xxxxxxxxxxxx';
var clientId = 'xxxx';
var post_data = {
grant_type : 'authorization_code',
client_id : clientId,
client_secret : secret,
code : key,
redirect_uri : translatedDomain
};
var post_options = {
host: 'login.mailchimp.com',
path: '/oauth2/token',
method: 'POST',
headers: {
'User-Agent' : 'oauth2-draft-v10',
'Content-Type': 'application/x-www-form-urlencoded',
'Accept': 'application/json'
}
};
var errors = false;
// Set up the request
var post_req = http.request(post_options, function(res) {
var str = '';
res.on('data', function (chunk) {
str += chunk;
});
res.on('error', function (error) {
console.log("error: " + error.message);
errors = true;
});
res.on('end', function () {
console.log(str);
try {
var accessToken = JSON.parse(str);
getEndpoint(accessToken.access_token, callback);
} catch (error) {
console.log('error: Error parsing JSON answer from the MailChimp API.');
console.log(error);
callback(false);
}
});
});
// post the data
post_req.write(querystring.stringify(post_data));
post_req.end();
}
我能够成功生成代码,但令牌存在问题。想法?
答案 0 :(得分:2)
你确定你得到400而不是更具体的东西,比如411吗?
我不是Node.js专业版,但是通过谷歌搜索似乎在Node中,您必须指定要发送的所有标头。具体来说,您的帖子请求上可能缺少内容长度标题,这可能会使服务器瘫痪。有关内容长度的更多信息,请查看these node docs。
如果不是这样,我会仔细查看原始请求(标题和所有内容),因为像这样的4xx错误表明服务器不明白你想要做什么。