MailChimp 登录 API "bad request"
MailChimp Login API "bad request"
这类似于以下问题:Mailchimp API login returning "bad request"
我正在重新发布我的结果,因为那个问题的解决方案没有解决我的问题。当我使用我自己生成的 API 密钥时,我的应用程序运行良好,但是当我尝试使用令牌进行验证时,我收到 400 响应,内容如下:
请求错误
您的浏览器发送了该服务器无法理解的请求。
参考#7.c2f0660.1429044353.139e2e94
我正在使用 Node.js 和 Express.js 4.x,验证码如下:
function getLogin(key, id, callback) {
console.log('mailchimp 登录');
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();
}
我能够成功生成代码,但令牌有问题。想法?
你确定你得到的是 400 而不是更具体的东西,比如 411?
我不是 Node.js 专业人士,但通过一些谷歌搜索,似乎在 Node 中,您必须指定要发送的所有 header。具体来说,您的 post 请求中似乎遗漏了 content-length header,这可能会导致服务器出错。查看 these node docs 了解有关 content-length 的更多信息。
如果不是这样,我会非常仔细地查看原始请求(headers 和所有),因为像这样的 4xx 错误表明服务器不理解你正在尝试做什么.
这类似于以下问题:Mailchimp API login returning "bad request"
我正在重新发布我的结果,因为那个问题的解决方案没有解决我的问题。当我使用我自己生成的 API 密钥时,我的应用程序运行良好,但是当我尝试使用令牌进行验证时,我收到 400 响应,内容如下:
请求错误
您的浏览器发送了该服务器无法理解的请求。参考#7.c2f0660.1429044353.139e2e94
我正在使用 Node.js 和 Express.js 4.x,验证码如下:
function getLogin(key, id, callback) { console.log('mailchimp 登录');
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();
}
我能够成功生成代码,但令牌有问题。想法?
你确定你得到的是 400 而不是更具体的东西,比如 411?
我不是 Node.js 专业人士,但通过一些谷歌搜索,似乎在 Node 中,您必须指定要发送的所有 header。具体来说,您的 post 请求中似乎遗漏了 content-length header,这可能会导致服务器出错。查看 these node docs 了解有关 content-length 的更多信息。
如果不是这样,我会非常仔细地查看原始请求(headers 和所有),因为像这样的 4xx 错误表明服务器不理解你正在尝试做什么.