我的初始化程序/ 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' }}}
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 :(得分: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']