1

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

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

有没有人遇到过这个问题?似乎在生产中没有读取密钥/秘密,但这对我来说没有任何意义。

4

1 回答 1

0

我们将问题追溯到一个“额外的”“?” 在其配置中的 nginx 重写中。万一其他人在将来的某个时候遇到这个问题,nginx 会完全按照您的指示去做。:)

于 2012-07-16T16:59:57.613 回答