我想在我的应用中将新注册添加到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: '' }
如何正确制定此请求?
答案 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 : ...
}