Mailchimp API“营销许可 ID '' 不存在。”在传递有效身份证件时
Posted
技术标签:
【中文标题】Mailchimp API“营销许可 ID \'\' 不存在。”在传递有效身份证件时【英文标题】:Mailchimp API "Marketing permission ID '' does not exist." while passing valid idMailchimp API“营销许可 ID '' 不存在。”在传递有效身份证件时 【发布时间】:2019-04-15 10:03:50 【问题描述】:我使用 Mailchimp API 首先为我的列表获取 marketing_permission_id。响应如下所示
[marketing_permission_id] => f878932739
然后在第二个 api 调用中使用此值来更新特定用户的设置。但是,我得到了错误:
字符串(227) ""type":"http://developer.mailchimp.com/documentation/mailchimp/guides/error-glossary/","title":"不好 Request","status":400,"detail":"营销许可 ID '' 没有 存在。”,[...]
我仔细检查了第二次通话中发送的数据,其中包含正确的 marketing_permission_id:
"marketing_permissions":"marketing_permission_id":"f878932739","enabled":true
我遵循https://developer.mailchimp.com/documentation/mailchimp/reference/lists/members/#%20的格式。
我不明白出了什么问题。希望这里有人这样做.. :)
【问题讨论】:
只是猜测:marketing_permissions 的类型是Array
,你有一个 Object
。
啊,是的,太棒了!我使用的是 json_encode,但这给了我 "marketing_permissions":"marketing_permission_id":"f878932739","enabled":true 而不是必需的 "marketing_permissions": ["marketing_permission_id": "f878932739", "已启用": true] 非常感谢!
【参考方案1】:
只是留下这个以供将来参考 - 谷歌上没有太多关于具有营销权限的 mailchimp API 的提示...... 这是我用于将联系人添加到列表的基本功能。
function syncMailchimp($userdata,
$apiKey, $listId)
$dataCenter = substr($apiKey,
strpos($apiKey, '-') +
1);
$url = 'https://'.$dataCenter.
'.api.mailchimp.com/3.0/lists/'
.$listId.
'/members/';
// This is the interesting part //
$json = json_encode([
'email_address' => $userdata[
'email'],
'status' => $userdata['status'], // "subscribed","unsubscribed","cleaned","pending"
'merge_fields' => [
'FNAME' => $userdata[
'firstname'
],
'LNAME' => $userdata['lastname']
],
'tags' => [
'added'
],
// How to build the Array -->
'marketing_permissions' =>
array(
0 =>
array(
'marketing_permission_id' =>
'1e5142bbce',
'enabled' =>
true,
),
),
]);
$ch = curl_init($url);
curl_setopt($ch,
CURLOPT_HTTPAUTH,
CURLAUTH_BASIC);
$headers = array(
'Content-Type:application/json',
'Authorization: apikey '
.$apiKey
);
curl_setopt($ch,
CURLOPT_HTTPHEADER,
$headers);
curl_setopt($ch,
CURLOPT_RETURNTRANSFER,
true);
curl_setopt($ch,
CURLOPT_TIMEOUT, 10);
curl_setopt($ch,
CURLOPT_CUSTOMREQUEST,
'POST');
curl_setopt($ch,
CURLOPT_SSL_VERIFYPEER,
false);
curl_setopt($ch,
CURLOPT_POSTFIELDS,
$json);
$result = curl_exec($ch);
$httpCode = curl_getinfo($ch,
CURLINFO_HTTP_CODE);
curl_close($ch);
return $result;
【讨论】:
是的,将数组包装在另一个数组中的那一小部分是获取方括号的诀窍:)(另请参阅***.com/questions/15559735/…) 试图在您的 MailChimp 帐户中查找列表的营销权限值?使用 API 添加新订阅者或更新订阅者;响应将包括您的受众可用的权限。 "marketing_permissions": [ "marketing_permission_id": "60c5898000", "text": "Email", "enabled": true , "marketing_permission_id": "f816caf000", "text": "Direct Mail", "enabled" :假,]以上是关于Mailchimp API“营销许可 ID '' 不存在。”在传递有效身份证件时的主要内容,如果未能解决你的问题,请参考以下文章
MailChimp API DrewM\MailChimp\MailChimp::call() 调用未定义的方法
Mailchimp 如何在 javascript 中调用 mailchimp 3.0 API