【问题标题】:Problems with MailChimp API in Ruby Error Code: -90Ruby 错误代码中 MailChimp API 的问题:-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

【问题讨论】:

    标签: ruby-on-rails ruby mailchimp


    【解决方案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)
        }
      

      【讨论】:

        猜你喜欢
        • 2016-04-03
        • 2021-04-22
        • 2016-09-21
        • 2017-04-20
        • 2018-03-18
        • 1970-01-01
        • 1970-01-01
        • 2017-09-26
        • 2018-10-13
        相关资源
        最近更新 更多