【问题标题】:Proxy configuring for facebook-omniauth with devise使用设计为 facebook-omniauth 配置代理
【发布时间】:2014-05-06 07:41:29
【问题描述】:

我的 Rails 4.1 应用程序有 omniauth autorization,带有宝石 facebook-omniauthdevise。它在我的家用电脑上运行良好。但是,当我尝试从位于proxy 后面的工作站上使用omniauth 时,出现以下错误:

I, [2014-05-06T11:20:52.161344 #9573]  INFO -- omniauth: (facebook) Request phase initiated.
I, [2014-05-06T11:20:52.332481 #9573]  INFO -- omniauth: (facebook) Request phase initiated.
I, [2014-05-06T11:20:52.511584 #9573]  INFO -- omniauth: (facebook) Callback phase initiated.
E, [2014-05-06T11:20:52.517301 #9573] ERROR -- omniauth: (facebook) Authentication failure! failed_to_connect: Faraday::ConnectionFailed, Network is unreachable - connect(2) for "graph.facebook.com" port 443

我尝试在我的设计初始化程序中指定代理,但它不起作用:

config.omniauth :facebook, Rails.application.secrets.facebook_key, Rails.application.secrets.facebook_secret,
               {:client_options => { :proxy => "172.16.3.160:4226"} }

如何正确指定代理?

【问题讨论】:

    标签: ruby-on-rails facebook oauth devise


    【解决方案1】:

    我找到了解决办法:

    由于 Omniauth 使用 Faraday,我们只需要为 Faraday 指定代理即可。 我们可以做到,把这段代码放在我们的omniauth.rb初始化器中:

      require 'socket'
      ip=Socket.ip_address_list.detect{|intf| intf.ipv4_private?}
      my_ip = ip.ip_address if ip
    
      if my_ip == "172.*.1*0.233"
        module Faraday
          class Connection
            alias_method :old_initialize, :initialize
    
            def initialize(url = nil, options = {})
              proxy = 'http://172.16.3.160:4226'
              (url.is_a?(Hash) ? url : options).merge!(proxy: proxy)
              old_initialize(url, options)
            end
          end
        end
      end
    

    【讨论】:

    • 谢谢哥们。它帮助我。 +1
    猜你喜欢
    • 2014-05-23
    • 2012-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-10
    • 1970-01-01
    • 2012-03-11
    • 1970-01-01
    相关资源
    最近更新 更多