Rails omniauth + Facebook通过http进行开发,但未通过HTTPS进行开发

问题描述:

我有一个Rails 3.1应用程序,它使用omniauth + Facebook进行登录验证。Rails omniauth + Facebook通过http进行开发,但未通过HTTPS进行开发

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 

有没有人遇到过这个问题?看起来好像没有在生产中读到钥匙/秘密,但这对我来说没有任何意义。

+0

您的SSL证书是否有效?究竟发生了什么问题?服务器日志中的任何错误? – Lix 2012-07-14 21:49:07

+0

SSL证书是自签名的,但是有效。 (脸谱)请求阶段启动。 (脸谱)回调阶段启动。 (脸书)身份验证失败! invalid_credentials:OAuth2 ::错误,OAuth2 ::错误 – QuietFoundation 2012-07-14 22:07:39

+0

用户处理:: OmniauthCallbacksController#失败为HTML,---这是在production.log中 – QuietFoundation 2012-07-14 22:09:19

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