在我的应用程序中,我希望在用户创建时自动订阅MailChimp列表。我找到的所有文档都集中在Gibbon API2.0和MailChip 1.x上。
这是我到目前为止所知道的:
我创建了一个包含以下内容的.env文件:
MAILCHIMP_API_KEY = "my_api_key"
MAILCHIMP_LIST_ID = "my_list_id"我用以下命令创建了一个名为gibbon.rb的初始化器:
Gibbon::Request.api_key = ENV["MAILCHIMP_API_KEY"]
Gibbon::Request.timeout = 15然后创建一个作业:
class SubscribeUserToMailingListJob < ActiveJob::Base
queue_as :default
def perform(user)
gibbon = Gibbon::Request.new
# I am getting errors from this line
gibbon.lists(ENV["MAILCHIMP_LIST_ID"]).members.create(body: {email_address: user.email, status: "subscribed", merge_fields: {FNAME: user.name, LNAME: ""}})
end
end在我的user.rb中,我检查过了这个
after_create :subscribe_user_to_mailing_list并在private下添加了以下内容:
def subscribe_user_to_mailing_list
SubscribeUserToMailingListJob.perform_later(self)
end我从gibbon.lists(ENV["MAILCHIMP_LIST_ID"]).members.create(body: {email_address: user.email, status: "subscribed", merge_fields: {FNAME: user.name, LNAME: ""}})收到一个400错误
*编辑*
根据此conversation。
我认为发生错误是因为该电子邮件地址已存在于列表中。当我第一次收到错误时,电子邮件地址被添加到MailChimp列表中,但由于另一个错误,用户没有在我的应用程序中创建。现在,当我尝试创建一个具有相同电子邮件地址的用户时,弹出错误400,因为该电子邮件已经存在。这也会阻止在我的应用程序中创建用户。
请有更多经验的人验证一下这是否正确?
发布于 2015-09-01 01:02:39
您是对的--如果您正在进行一个POST调用,并且您要发布的内容已经存在,那么您将得到一个错误。在接口支持PUT之前,更新或订阅是一个两步操作。检查订阅服务器是否存在,然后使用适当的方法。或者,您可以先尝试PATCH,如果使用404失败,则执行POST。
https://stackoverflow.com/questions/32291348
复制相似问题