Ruby 错误代码中 MailChimp API 的问题:-90

Posted

技术标签:

【中文标题】Ruby 错误代码中 MailChimp API 的问题:-90【英文标题】:Problems with MailChimp API in Ruby Error Code: -90 【发布时间】:2011-07-10 16:49:55 【问题描述】:

我在我的 MailChimp 控制器中使用以下代码来提交简单的时事通讯数据。当它被发送时,我收到以下错误,因为“此服务器未导出方法 -90”我在下面附加了我的控制器代码。我正在将此控制器用于一个简单的时事通讯注册表单。 (姓名,电子邮件)

class MailchimpController < ApplicationController

  require "net/http"
  require "uri"

  def subscribe  
    if request.post?
      mailchimp = 
      mailchimp['apikey']  =  'f72328d1de9cc76092casdfsd425e467b6641-us2'
      mailchimp['id']  =  '8037342dd1874'
      mailchimp['email_address']  =  "email@gmail.com"
      mailchimp['merge_vars[FNAME]']  =  "FirstName"
      mailchimp['output']  =  'json'

      uri = URI.parse("http://us2.api.mailchimp.com/1.3/?method=listSubscribe")
      response = Net::HTTP.post_form(uri, mailchimp)    
      mailchimp = ActiveSupport::JSON.decode(response.body)

      if mailchimp['error']
        render :text =>    mailchimp['error'] + "code:" + mailchimp['code'].to_s  
      elsif mailchimp == 'true'
        render :text => 'ok' 
      else
        render :text => 'error'
      end
    end
   end    

end

【问题讨论】:

【参考方案1】:

我强烈推荐原始人宝石:https://github.com/tatemae-consultancy/hominid

【讨论】:

这是一个梦想。谢谢! +1【参考方案2】:

问题在于 Net::HTTP.post_form 没有传递“方法”GET 参数。不是一个大红宝石用户,我不确定使用 Net::HTTP 执行此操作的实际正确方法是什么,但这有效:

require "net/http"
data="apikey=blahblahblah"
response = nil
Net::HTTP.start('us2.api.mailchimp.com', 80) |http|
  response = http.post('/1.3/?method=lists', data)

p response.body

这是 lists() 方法(为简单起见),您必须构建(并对您的值进行 urlencode!)您的完整 POST 参数,而不是简单地提供哈希。

您是否查看了许多可用于红宝石的宝石?

http://apidocs.mailchimp.com/downloads/#ruby

更大的问题,也是我回复此问题的主要原因,是您的 API 密钥没有得到足够好的混淆。当然,我习惯与他们合作,但我能够很快猜到。我建议立即在您的帐户中禁用该密钥,然后编辑帖子以实际拥有完全伪造的数据,而不是任何接近正确密钥的数据。另一方面,列表 id 根本不重要。

【讨论】:

【参考方案3】:

如果在将散列传递给 Net::HTTP 之前将其转换为 json,则可以使用散列。合并后的代码如下所示:

  mailchimp = 
  mailchimp['apikey']             =  'APIKEYAPIKEYAPIKEYAPIKEY'
  mailchimp['id']                 =  '8037342dd1874'
  mailchimp['email_address']      =  "email@gmail.com"
  mailchimp['merge_vars[FNAME]']  =  "FirstName"
  mailchimp['output']             =  'json'

  response = nil
  Net::HTTP.start('us2.api.mailchimp.com', 80) |http|
    response = http.post('/1.3/?method=listSubscribe', mailchimp.to_json)
  

【讨论】:

以上是关于Ruby 错误代码中 MailChimp API 的问题:-90的主要内容,如果未能解决你的问题,请参考以下文章

Mailchimp double_optin => false 在 mailchimp-api-ruby 中不起作用

如何使用 ruby​​ 处理 mailchimp 模板?

长臂猿的 Rails Mailchimp API 错误

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

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

Mailchimp api 3.0 错误:“架构描述了对象,而是找到了数组”是代码还是在 mailchimp 的末尾?