2013-10-29 26 views
14

Bir proxy'nin arkasındaki bir Rails uygulamasında linkedin-omniauth gemini kullanmaya çalışıyoruz.Raylar Omniauth ile giden http proxy

Vekil sunucuyu kullanmak için omniauth'u bulabilmek için bulabildiğim her şeyi denedim ama işe yaramayacağım.

provider :linkedin, 'xxx', 'xxx', { 
    :client_options => { 
    :proxy => ENV["HTTP_PROXY"] || ENV["http_proxy"] 
    } 
} 

benim için çalışıyorum ve kaynakta 'vekaleten' sözünü görmez Hangi:

following post kullanarak önerir. Ayrıca proxy'yi kodlamayı denedim. Başarı yok.

This SO post doesn't work for me either.

Ben de bir proxy ile net :: http Başlatıcı bir yarattı. Bu da işe yaramıyor. Proxy'yi benim kabuğumda ve bashrc'ta ihraç ettim. Ve/etc/ortamında. Hiçbir şey çalışmıyor.

Giden bir proxy kullanmak için omniauth'u nasıl alabilirim? Kabul cevabı aşağıda gerçekten Linkedin Oauth için çalışır iken

--- GÜNCELLEME ---

, en taşlar artık Oauth2 güveniyor. Bu Net :: HTTP ortadan kaldırmaktadır ve proxy/bağlantı ayarları için kurallara ayrı kümesi vardır Faraday'ı tanıtır. Amacıyla

https://github.com/simonmorley/oauth2/blob/master/lib/oauth2/client.rb#L36

(sonradan taşlar ile çalışan bir proxy almak inc popüler Facebook, Google, Github) onlar itimat ne mücevher kontrol, kendi Başlatıcı aşağıdaki kullanmak gerekir:

provider :foursquare, 'xxx', 'xxx', { 
    :client_options => { 
     :connection_opts => { 
     :proxy => "http://127.0.0.1:3128" 
     } 
    } 
    } 
+0

Bu harika bir güncelleme! Sitemi bir sağlayıcıya dönüştürmek zorunda kaldığım için kesinlikle OAuth2 bandındayım. Her vekil bir kalamar proxy'si (http://www.squid-cache.org/) gibi çalışmadığı sürece, 3128 numaralı bağlantı noktasının localhost'unun genel durum için biraz özel olduğunu düşündüğünden, proxy ayarını kontrol etmek isteyebilirsiniz. – Marc

+1

3128 localhost, jus 'testi için :) Sunucularınızı bir proxy arkasına yerleştirmeyi düşünen Blimey, bu kadar acıya sebep olur! – simonmorley

+1

Koroya vaaz veriyorsun, Playboy! – Marc

cevap

2

Ben omniauth-twitter için aynı sorunu sabit bir yıl önce bu pull-request geldi. Buna

require 'omniauth-oauth' 
require 'multi_json' 

module OmniAuth 
    module Strategies 
    class Twitter < OmniAuth::Strategies::OAuth 
     option :name, 'twitter' 
     option :client_options, {:authorize_path => '/oauth/authenticate', 
           :site => 'https://api.twitter.com'} 

: Eğer fix bakarsak, bunların tüm yaptığım bu değişiklik olduğu anlaşılmaktadır

require 'omniauth-oauth' 
require 'multi_json' 

module OmniAuth 
    module Strategies 
    class Twitter < OmniAuth::Strategies::OAuth 
     option :name, 'twitter' 
     option :client_options, {:authorize_path => '/oauth/authenticate', 
           :site => 'https://api.twitter.com', 
         :proxy => ENV['http_proxy'] ? URI(ENV['http_proxy']) : nil} 

ben bu olacak oauth "vekil" değeri parametre setleri varsayalım istek başlığından geçti. Omniauth-linkedin repo'yu çatallatır ve OmniAuth::Strategies::LinkedIn'da benzer bir değişiklik yaparsanız, proxy sunucusu aracılığıyla kimliğinizi doğrulamanız gerekir.

require 'omniauth/strategies/oauth' 

module OmniAuth 
    module Strategies 
    class LinkedIn < OmniAuth::Strategies::OAuth 
     option :name, "linkedin" 

     option :client_options, { 
     :site => 'https://api.linkedin.com', 
     :request_token_path => '/uas/oauth/requestToken', 
     :access_token_path => '/uas/oauth/accessToken', 
     :authorize_url => 'https://www.linkedin.com/uas/oauth/authenticate', 
     :proxy => ENV['http_proxy'] ? URI(ENV['http_proxy']) : nil 
     } 

Bu OmniAuth, tüketmek parametreleyebilir ve düzgün istekte yerleştirebilirsiniz bir URI örneğine ayarı çevreyi dönüştürmek olmalıdır: Ben çizgisinde bir değişiklik öneriyoruz.

+0

Şerefe, sadece yeniden ziyaret etmek için tur attı. – simonmorley

+0

Aslında, çoğu oauth mücevherlerini fark eden hafif bir plan değişikliği şimdi Oauth2 kullanıyor. Gelecekte arama yapan herkes için bir örnek eklediniz. Google rn üzerinde oldukça yüksek görünüyor. – simonmorley

İlgili konular