2011-10-07 27 views
0

我的初始化/ devise.rb用途:如何阻止omniauth client_options傳遞給Facebook?

config.omniauth :facebook, Facebook::APP_ID, Facebook::SECRET, {:scope => Facebook::SCOPE, :client_options => { :ssl => { :ca_file => '/usr/lib/ssl/certs/ca-certificates.crt' }}} 

和生成: https://graph.facebook.com/oauth/authorize?response_type=code&client_id=123&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fusers%2Fauth%2Ffacebook%2Fcallback&parse=query&scope=user_about_me%2Cuser_birthday%2Cuser_location%2Cemail&client_options=%7B%3Assl%3D%3E%7B%3Aca_file%3D%3E%22%2Fusr%2Flib%2Fssl%2Fcerts%2Fca-certificates.crt%22%7D%7D

爲OA-OAuth的戰略文件facebook.rb表明這一點:

def initialize(app, client_id=nil, client_secret=nil, options = {}, &block) 
    client_options = { 
     :site => 'https://graph.facebook.com/', 
     :token_url => '/oauth/access_token' 
    } 

    options = { 
     :parse => :query 
    }.merge(options) 

    super(app, :facebook, client_id, client_secret, client_options, options, &block) 
    end 

問題: 似乎無法通過傳遞值來設置:client_options,那麼爲什麼omniauth wiki會顯示是代碼?我不希望這個信息通過電線傳遞,如果它不需要,FB只是將它忽略爲不受支持。那麼有沒有一種方法可以設置ssl選項,還是需要它?

回答

0

我最終刪除了client_options參數,因爲它似乎是config.omniauth初始值設定程序不接受它。這樣它就不會將價值傳遞給Facebook。

0

我知道這是舊的,但我GOOGLE了,這是第一個結果出現在第一。

我有一個facebook.yml文件與我的配置每env。我得到這個錯誤,因爲我沒有爲dev設置client_options。我通過合併client_options來解決它,如果它們不是零。

我希望這可以幫助別人。

FACEBOOK = YAML.load_file("#{::Rails.root}/config/facebook.yml")[::Rails.env] 
config.omniauth :facebook, FACEBOOK['app_id'], FACEBOOK['secret'], { scope:FACEBOOK['scope'] } 
config.omniauth['scope'].merge(client_options:FACEBOOK['client_options']) if FACEBOOK['client_options']