MailChimp登录API“错误请求”

时间:2015-04-14 21:14:03

标签: javascript oauth mailchimp

这类似于以下问题: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();

}

我能够成功生成代码,但令牌存在问题。想法?

1 个答案:

答案 0 :(得分:2)

你确定你得到400而不是更具体的东西,比如411吗?

我不是Node.js专业版,但是通过谷歌搜索似乎在Node中,您必须指定要发送的所有标头。具体来说,您的帖子请求上可能缺少内容长度标题,这可能会使服务器瘫痪。有关内容长度的更多信息,请查看these node docs

如果不是这样,我会仔细查看原始请求(标题和所有内容),因为像这样的4xx错误表明服务器不明白你想要做什么。

相关问题