Mailchimp API v3 创建列表 REST 客户端 Ruby

Mailchimp API v3 create list REST Client Ruby

我正在尝试 create a Mailchimp list using Mailchimps API (v3) and the REST Client gem。我已经使它正常工作以检索列表名称和 ID。但是,我收到了关于创建列表的 401 Unauthorized - API Key Missing 响应。我认为我的 post 请求格式不正确,但我无法确定哪里出错了。我的代码如下所示:

params_hash = {
  name: "#{territory}",
  contact: {
    company: "Company",
    address1: "Address",
    city: "City",
    state: "State",
    zip: "0000",
    country: "US"
  },
  permission_reminder: "You are receiving this email because....",
  campaign_defaults: {
    from_name: "From Name",
    from_email: "contact@contact.com",
    subject: "Subject",
    language: "en"
  },
  notify_on_subscribe: "contact1@contact.com",
  notify_on_unsubscribe: "contact1@contact.com",
  email_type_option: true,
  apikey: mailchimp_key
}

RestClient.post("#{mailchimp_url}/lists", { params: params_hash }) { |response, request, result, &block|

}

您不应在有效负载中传递 API 密钥,而应使用 HTTP Basic Authentication。 RestClient 确实支持这个,但是有点尴尬。如果您想使用 RestClient 快捷方式,您可以修改 URL 以包含 username/password,如下所示: https://username:api_key@us1.api.mailchimp.com -- 用户名对 MailChimp 无关紧要,但它是 Basic 所必需的Auth,所以你可以传递任何东西。

或者,您可以直接使用 RestClient 的 Request class,使您的请求变成这样:

RestClient::Request.execute(method: :post, url: "#{mailchimp_url}/lists", payload: params_hash, user: 'anything', password: mailchimp_key)

但是,老实说? RestClient 不是很好。我更喜欢 HTTParty,它允许您创建非常轻量级的包装器,并为您设置了很多默认值,或者像 RestClient 一样使用它,但更友好 API:

HTTParty.post("#{mailchimp_url}/lists", body: params_hash, basic_auth: {username: 'whatever', password: mailchimp_key})