2014-05-06 74 views
1

我有omniauth autorization为我的Rails 4.1应用程序与宝石facebook-omniauthdevise。它可以在我的家用PC上正常工作。但是,当我试图从我的工作站,这是proxy我有以下错误背后使用omniauth:代理配置facebook-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"} } 

如何正确指定代理?

回答

1

我已经找到了解决办法:

由于Omniauth使用法拉第,我们只需要法拉第指定代理。 我们可以做到这一点,把这个代码在我们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 
+0

谢谢哥们。它帮助我。 +1 – harsh4u