通过Node和Mailchimp API 3.0将成员添加到Mailchimp列表

时间:2015-11-07 19:25:44

标签: node.js npm mailchimp

我想在我的应用中将新注册添加到Mailchimp列表中。它通过像这样的cURL语句完美地运行:

curl --request POST --url 'https://us4.api.mailchimp.com/3.0/lists/[listid]/members' --user 'anystring:[api key]-us4' --header 'content-type: application/json' --data '{"email_address":"test@example.com", "status":"subscribed","merge_fields":{"FNAME":"Freddie","LNAME":"Jones"}}' --include

我正在使用带有Node.js的Request模块,如下所示:

var request = require('request');

request({
    url: 'https://us4.api.mailchimp.com/3.0/lists/[list-id]/members',
    user: 'anystring:[api-key]',
    json: {
        "email_address":"test@example.com",
        "user":"anystring:[api-key]",
        "status":"subscribed",
        "merge_fields":{
            "FNAME":"Freddie",
            "LNAME":"Jones"
        }
    },
    method: 'POST',
    headers: {
        'Content-Type': 'application/json'
    }
}, function(error, response, body){
        if(error) {
            console.log(error);
        } else {
            console.log(response.statusCode, body);
        }
    }
);

但是我收到了这个错误:

401 { type: 'http://developer.mailchimp.com/documentation/mailchimp/guides/error-glossary/',
title: 'API Key Missing',
status: 401,
detail: 'Your request did not include an API key.',
instance: '' }

如何正确制定此请求?

3 个答案:

答案 0 :(得分:2)

我刚刚与我最近用于访问Mailchimp的一些代码进行了比较,并注意到我正在提供这样的API密钥:

var request = require('superagent'); // I am using SuperAgent

request.post(url)
.set('Authorization', 'apikey ' + apiKey) // this sets a header field
.send(data)
.end(function(err, response) {
    // ...
});

请注意,我使用SuperAgent而不是请求库。您应该能够轻松移植代码段。

基本上,头字段Authorization是字符串apikey(尾随空格)和实际API密钥的串联。查看请求documentation,这应该有效:

request({
    url: 'https://us4.api.mailchimp.com/3.0/lists/[list-id]/members',
    json: json,
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',
        'Authorization': 'apikey ' + apiKey
    }
}, function(error, response, body) {
    // ...
});

答案 1 :(得分:1)

在客户支持中来回几次,最后我想我需要将我的API密钥添加到 请求标题 ,以便使用MailChimp进行正确的身份验证v3.0 API。这是我使用的代码:

request({
    url: 'https://us4.api.mailchimp.com/3.0/lists/[list id]/members',
    json: {
        'email_address': user.email,
        'user': 'anystring:[api key]',
        'status': 'subscribed',
        'merge_fields': {
            'FNAME': user.firstName,
            'LNAME': ''
        }
    },
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',
        'Authorization': 'apikey [api key]'
    }
}, function(error, response, body){
    if(error) {
        console.log(error);
    } else {
        console.log(response.statusCode, '>>>>> USER ADDED TO MAILCHIMP');
        // THEN log the user into the app
        req.login(user, function(err) {
            if (err) {
                res.status(400).send(err);
            } else {
                res.json(user);
            }
        });
    }
});

答案 2 :(得分:0)

我在mailchimp v3 wrapper中使用了请求。我使用以下内容进行授权,没有任何问题:

request({
  method : ...,
  url : ...,
  auth : {
    user : 'any',
    password : api_key
  },
  json : ...,
  qs : ...
}