【问题标题】:GIBBON::must set an api_key prior to making a call - railsGIBBON::必须在调用之前设置一个 api_key - rails
【发布时间】:2016-11-06 17:43:41
【问题描述】:

我使用了一个教程来设置我的应用程序与 mailchimp,以便它将新订阅者发送到 mailchimp 列表。如果您按照流程进行,一切都会正常工作。但是当我运行 Rspec 时,我的测试套件的一半是红色的,出现此错误Gibbon::GibbonError:You must set an api_key prior to making a call。我尝试在它说的地方设置我的 api 密钥,但它不起作用?为了清楚起见,我将发布一些代码。

长臂猿.rb:

Gibbon::API.api_key = ENV["MAILCHIMP_API_KEY"]
Gibbon::API.timeout = 15
Gibbon::API.throws_exceptions = true

工作

     class SubscribeUserToMailingListJob < ActiveJob::Base
  queue_as :default

  def perform(subscriber)
    gb = Gibbon::API.new(Figaro.env.mailchimp_api_key)
    gb.lists.subscribe({:id => ENV["MAILCHIMP_LIST_ID"], :email => {:email => subscriber.email}, :merge_vars => {:FNAME => subscriber.first_name, :LNAME => subscriber.last_name}, :double_optin => false})
  end
end

型号:

 def subscribe_user_to_mailing_list
   SubscribeUserToMailingListJob.perform_later(self)
 end

错误

 Create a subscriber Subscriber can sign in
  Failure/Error: gb.lists.subscribe({:id => ENV["MAILCHIMP_LIST_ID"],   :email => {:email => subscriber.email}, :merge_vars => {:FNAME =>   subscriber.first_name, :LNAME => subscriber.last_name}, :double_optin =>   false})

Gibbon::GibbonError:
You must set an api_key prior to making a call

我迷路了。任何帮助都会很棒!谢谢。

【问题讨论】:

    标签: ruby-on-rails mailchimp mailchimp-api-v3.0 gibbon


    【解决方案1】:

    OP,我假设在你的测试中你设置了一个 MAILCHIMP_API_KEY env var,但 Gibbon 仍然给你错误,就好像你根本没有得到一样?

    问题在于 Gibbon 期望任何 API 密钥字符串都按照 Mailchimp 的 API 密钥进行格式化。因此,如果您在测试中使用字符串api_key_123,您可以设置,使用Gibbon::API.api_key = "api_key_123" 不会出现问题,但在您尝试使用它时,Gibbon 会表现得像它没有'不存在。而如果您使用 Mailchimp 格式的密钥,例如 8472f063cf868ab9a49ccbb118c1d5f1-us15,Gibbon 将承认它的存在。

    【讨论】:

      【解决方案2】:

      首先生成一个 MailChimp API 密钥怎么样?如果您有 MailChimp 帐户,您可以轻松地在额外菜单中获得一个。

      将“MAILCHIMP_API_KEY”替换为您在以下行中的密钥:Gibbon::API.api_key = ENV["MAILCHIMP_API_KEY"]

      【讨论】:

        【解决方案3】:

        我认为你应该在你的模型中需要这样的 gem dotenv

        class SubscribeUserToMailingListJob < ActiveJob::Base
          queue_as :default
        
          require 'dotenv'
          Dotenv.load
        
        
          def perform(subscriber)
            gb = Gibbon::API.new(Figaro.env.mailchimp_api_key)
            gb.lists.subscribe({:id => ENV["MAILCHIMP_LIST_ID"], :email => {:email => subscriber.email}, :merge_vars => {:FNAME => subscriber.first_name, :LNAME => subscriber.last_name}, :double_optin => false})
          end
        end
        

        【讨论】:

          猜你喜欢
          • 2014-06-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-04-04
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多