如何使用云功能将新用户添加到 Mailchimp 活动中?
How to add a new user to Mailchimp campaign using cloud functions?
我正在尝试将新用户添加到 Mailchimp 活动中。我收到两个错误,第一个说:
Function returned undefined, expected Promise or value
第二个错误的日志是:
Error: The resource submitted could not be validated. For field-specific details, see the 'errors' array.
type: 'http://developer.mailchimp.com/documentation/mailchimp/guides/error-glossary/',
title: 'Invalid Resource',
status: 400,
detail: 'The resource submitted could not be validated. For field-specific details, see the \'errors\' array.',
instance: '549e8553-5ef1-4600-9271-07255f4673fe',
errors:
[ { field: 'status',
message: 'The value you selected is not a valid choice.' } ] }
这是我的功能
exports.userCreated = functions.auth.user().onCreate((user) => {
const email = user.email;
// const displayName = user.name;
// make Mailchimp API request to add a user
Mailchimp
.post('/lists/id/members', {
email_address: email,
status: 'Signed Up',
// optional: requires additional setup
merge_fields: {
"EMAIL" : email
}
})
.then(function(results) {
console.log('Successfully added new Firebase user', email, 'to Mailchimp list',results);
})
.catch(function(err) {
console.log(email);
console.log('Mailchimp: Error while attempting to add registered subscriber —', err);
});
});
正如您检测到的,您的 Cloud Function 中有两个错误:
第一个是您必须 return 在后台触发 Cloud Function 的 Promise(或值),以向平台表明它已完成。请观看 Firebase video series 中有关 "JavaScript Promises" 的三个视频,了解有关此关键点的更多详细信息。
第二个问题是你的字段值status
"is not a valid choice"。看看 Mailchimp doc,如果我没记错的话,正确的值是:
subscribed
、pending
、unsubscribed
或 cleaned
.
因此,以下更改应该可以解决问题:
exports.userCreated = functions.auth.user().onCreate((user) => {
const email = user.email;
// const displayName = user.name;
// make Mailchimp API request to add user
return mailchimp
.post('/lists/id/members', {
email_address: email,
status: 'subscribed', // For example, it's up to you to find the correct status
// optional: requires additional setup
merge_fields: {
"EMAIL" : email
}
})
.then(function(results) {
console.log('Successfully added new Firebase user', email, 'to Mailchimp list',results);
return null;
})
.catch(function(err) {
console.log(email);
console.log('Mailchimp: Error while attempting to add registered subscriber —', err);
return null;
});
});
我正在尝试将新用户添加到 Mailchimp 活动中。我收到两个错误,第一个说:
Function returned undefined, expected Promise or value
第二个错误的日志是:
Error: The resource submitted could not be validated. For field-specific details, see the 'errors' array.
type: 'http://developer.mailchimp.com/documentation/mailchimp/guides/error-glossary/',
title: 'Invalid Resource',
status: 400,
detail: 'The resource submitted could not be validated. For field-specific details, see the \'errors\' array.',
instance: '549e8553-5ef1-4600-9271-07255f4673fe',
errors:
[ { field: 'status',
message: 'The value you selected is not a valid choice.' } ] }
这是我的功能
exports.userCreated = functions.auth.user().onCreate((user) => {
const email = user.email;
// const displayName = user.name;
// make Mailchimp API request to add a user
Mailchimp
.post('/lists/id/members', {
email_address: email,
status: 'Signed Up',
// optional: requires additional setup
merge_fields: {
"EMAIL" : email
}
})
.then(function(results) {
console.log('Successfully added new Firebase user', email, 'to Mailchimp list',results);
})
.catch(function(err) {
console.log(email);
console.log('Mailchimp: Error while attempting to add registered subscriber —', err);
});
});
正如您检测到的,您的 Cloud Function 中有两个错误:
第一个是您必须 return 在后台触发 Cloud Function 的 Promise(或值),以向平台表明它已完成。请观看 Firebase video series 中有关 "JavaScript Promises" 的三个视频,了解有关此关键点的更多详细信息。
第二个问题是你的字段值status
"is not a valid choice"。看看 Mailchimp doc,如果我没记错的话,正确的值是:
subscribed
、pending
、unsubscribed
或 cleaned
.
因此,以下更改应该可以解决问题:
exports.userCreated = functions.auth.user().onCreate((user) => {
const email = user.email;
// const displayName = user.name;
// make Mailchimp API request to add user
return mailchimp
.post('/lists/id/members', {
email_address: email,
status: 'subscribed', // For example, it's up to you to find the correct status
// optional: requires additional setup
merge_fields: {
"EMAIL" : email
}
})
.then(function(results) {
console.log('Successfully added new Firebase user', email, 'to Mailchimp list',results);
return null;
})
.catch(function(err) {
console.log(email);
console.log('Mailchimp: Error while attempting to add registered subscriber —', err);
return null;
});
});