Mailchimp:提供的 API 密钥链接到不同的数据中心

Posted

技术标签:

【中文标题】Mailchimp:提供的 API 密钥链接到不同的数据中心【英文标题】:Mailchimp: The API key provided is linked to a different datacenter 【发布时间】:2017-06-07 05:30:20 【问题描述】:

我正在尝试update a Mailchimp list,但收到以下错误:


 "type":"http://developer.mailchimp.com/documentation/mailchimp/guides/error-glossary/",
 "title":"Wrong Datacenter",
 "status":403,
 "detail":"The API key provided is linked to a different datacenter",
 "instance":""

但是,我的请求 URL 中引用的数据中心与我的 API 密钥后缀相同 (us14)。

request.put(
    url: 'https://us14.api.mailchimp.com/3.0/lists/xxxxxxxxx/members/',
    auth: 
        user: 'apikey:xxxxxxxxxxxxxxxxxxxxx-us14'
    ,
    data: 
        email_address: email,
        status_if_new: 'subscribed',
        email_type: 'html'
    

我已尝试生成新的 API 密钥,但无济于事(它们都在 us14 中)。

【问题讨论】:

您是否使用API playground 测试过相同的 API 密钥?如果是这样,它有效吗? 是的,确实如此。 @ekad 我遇到了同样的问题。对于他们的 API 和文档非常糟糕的 mailchimp 有多棒。浪费这么多时间做一件基本的事情。 【参考方案1】:

好的,我首先通过 headers 对象传递您的 API 密钥来实现此功能。其次,我将我的数据包装在 JSON.stringify 中,以确保 MailChimp 在发布时收到正确的 JSON 对象。示例代码见下文,希望对您有所帮助:

request.post(
  url: 'https://usXX.api.mailchimp.com/3.0/lists/xxxxxxx/members',
  headers: 
    'Content-Type': 'application/json',
    'Authorization': 'Basic xxxxxxxxxxxxxxxxxxxxxxxxx-usXX'
  ,
  form: JSON.stringify(
    email_address: req.body.email,
    status: 'subscribed',
    interests:  'xxxxxxx': true  // Interest Group
  )
, function(err, httpResponse, body) 
  res.send(body);
);

【讨论】:

【参考方案2】:
const options = 
    method: "POST",
    auth: "uname:apikey656a******d2dfdb37c071a7cc-us19" //Should not give a space after a colon after uname
  

我在 uname 的冒号后面加了一个空格。现在 API 工作正常

【讨论】:

以上是关于Mailchimp:提供的 API 密钥链接到不同的数据中心的主要内容,如果未能解决你的问题,请参考以下文章

Spatie/Newsletter:Laravel 5.6 中提供的 MailChimp 无效 MailChimp API 密钥

Laravel 提供了无效的 MailChimp API 密钥

如何将 API 密钥添加到 mailchimp 的 Axios 发布请求

当我尝试使用 Retrofit 访问 MailChimp 的 API 时,API 密钥总是丢失

MailChimp 错误状态:401 标题:“API 密钥无效”

使用 RestSharp 向 Mailchimp API 3.0 查询帐户详细信息时出现“API 密钥丢失”错误