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 标记 API 静默失败

Mailchimp 如何在 javascript 中调用 mailchimp 3.0 API

通过 MailChimp 2.0 API 为用户订阅群组

Mailchimp api 3.0错误:“Schema描述对象,找到数组”是代码还是在mailchimp的结尾?

只需一次调用 MailChimp API v3 即可获取所有 mailchimp 活动的详细信息