如何阻止omniauth client_options传递给Facebook?

时间:2011-10-07 08:53:32

标签: ruby-on-rails facebook omniauth

我的初始化程序/ devise.rb使用:

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选项还是需要?

2 个答案:

答案 0 :(得分:0)

我最后只删除了client_options参数,因为config.omniauth初始化程序似乎没有接受它。这样它就不会将值传递给facebook。

答案 1 :(得分:0)

我知道这是旧的,但我用谷歌搜索,这是第一个出现的结果。

我有一个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']