Rails omniauth + Facebook通过http开发,但不是通过HTTPS生成

时间:2012-07-14 21:46:28

标签: ruby-on-rails facebook omniauth

我有一个Rails 3.1应用程序,它使用omniauth + Facebook进行登录验证。

omniauth (1.1.0)
  hashie (~> 1.2)
  rack
omniauth-facebook (1.2.0)
  omniauth-oauth2 (~> 1.0.0)
omniauth-oauth2 (1.0.0)
  oauth2 (~> 0.5.0)
  omniauth (~> 1.0)

当我设置Facebook设置以使用localhost:3000 / users / auth / facebook时,效果很好。当我将代码部署到生产中时,它根本不起作用。主要区别在于本地,我只使用HTTP,而在生产中,Nginx配置为强制HTTPS(通过重定向)。

initializers/devise.rb
config.omniauth :facebook, '1705xxxxxxxxx586', '173b59ba3xxxxxxxxxxxx893e2e697', :scope => 'email,user_birthday'

initializers/omniauth.rb
Rails.application.config.middleware.use OmniAuth::Builder do
  #provider :facebook, ENV['FACEBOOK_KEY'], ENV['FACEBOOK_SECRET']
  provider :facebook, '1705xxxxxxxxx586', '173b59ba3xxxxxxxxxxxx893e2e697',
        :scope => 'email,user_birthday',
        :client_options => {:ssl => {:ca_path => '/etc/nginx/certs/cacert.pem'}}
end

之前有没有人遇到这个问题?似乎关键/秘密没有在生产中阅读,但这对我没有任何意义。

1 个答案:

答案 0 :(得分:0)

我们将问题追溯到“额外”“?”在其配置中的nginx重写中。如果其他人在将来某个时候遇到这种麻烦,nginx就会完全按照你的要求去做。 :)