【问题标题】:Ruby On Rails: Instagram gem, unable to reach callback urlRuby On Rails:Instagram gem,无法访问回调 url
【发布时间】:2012-12-11 05:28:59
【问题描述】:

我已经看到 Instagram gem 和实时 API 的一些有趣行为,我正在尝试创建一个基本应用程序来创建订阅和处理 Instagram 的响应。下面是创建订阅并将标签名称保存到我的数据库的代码。

  def create
    @subscription = Subscription.new params[:subscription]
    options = {:object_id => params[:subscription][:tag_name]}

    if @subscription.save
      Instagram.create_subscription('tag', "http://myapp.herokuapp.com/subscriptions/process_subscription/", aspect = 'media', options)
      redirect_to "/subscriptions/tag/#{@subscription.tag_name}"
  end

请注意,回调 URL 位于可访问的 heroku,有趣的是,当我转到 heroku 域的 subscriptions/new 时,Instagram API 给了我一个“错误请求,无法访问回调 URL”。当我使用相同的回调 url 通过 curl 创建订阅时,一切都按预期工作,当我在本地主机上转到 subscriptions/new 时(设置相同的回调 url),它也按预期工作。下面是 process_subscription 动作:

def process_subscription
  if params["hub.challenge"]
    render :text => params["hub.challenge"]
  else      
    PrivatePub.publish_to("/subscriptions/tag/#{params[:object_id]}", payload: params[:_json])
  end
end

第一个 if 语句将处理 pubsubhub 挑战。实际创建订阅后,接收和处理有效负载就没有问题了。所以现在我唯一能想到的是,当我在 heroku 域时,服务器进程在 Instagram 发回给它时有点忙,我不明白这怎么可能,所以任何建议都将不胜感激。

这里是订阅成功和失败时的服务器日志链接。请注意,我正在注销这些日志中的帖子参数。 https://gist.github.com/4256108。

【问题讨论】:

    标签: ruby-on-rails-3 real-time instagram


    【解决方案1】:

    经过多次尝试和错误,当 Instagram 将其 hub.challenge 发送回应用程序导致“错误请求,无法访问回调 URL”错误时,问题看起来越来越像 rails 进程很忙。

    对我有用的是使用另一个线程创建 Instagram 订阅,这样 Instagram 几乎可以立即成功地访问我的应用程序并到达我的回调 url。这个解决方案是最快和最轻量级的,也许在 Heroku 上购买一个或多个工作人员并通过 Sidekiq 或其他方式将其移至后台进程是有益的,但这对于仅响应集线器挑战来说似乎有点矫枉过正。

      def instagram_photos
        Thread.new do |t|
          options = {:object_id => params[:tag_name]}
          Instagram.create_subscription('tag', "http://myapp.herokuapp.com/subscriptions/process_subscription", aspect = 'media', options)
          t.exit
        end
        redirect_to root_path
      end
    

    【讨论】:

    • 除了这个Thread方法之外,更好的解决方案是使用像Unicorn这样默认处理并发进程的服务器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-06
    相关资源
    最近更新 更多