har*_*ald 3 rack passenger omniauth ruby-on-rails-3
我正在尝试使用OmniAuth从头开始构建一个新的rails 3应用程序.目前我只有一个完全空的应用程序,我在Gemfile中添加了omniauth,并在config/initializers中添加了omniauth.rb,如下所示:
Rails.application.config.middleware.use OmniAuth::Builder do
provider :facebook, 'APP_ID', 'APP_SECRET'
end
Run Code Online (Sandbox Code Playgroud)
(当然,除了正确的app id和秘密而不是占位符.)
这似乎在使用Webrick从我的开发机器运行时起作用,但是facebook发出错误,因为localhost:3000未注册为应用程序.所以我将它上传到生产服务器进行测试.这里的请求似乎完全绕过了机架层,最终导致路由器抛出RoutingError,因为在routes.rb中没有定义名为/ auth/facebook的路由.
服务器运行apache 2.2,ruby 1.8.7,rails 3.0.1,rack 1.2和passenger 3.0.0.有什么明显我想念的吗?
顺便说一句,该应用程序安装到子URL,即http://www.mydomain.net/myapp
自己找到了:
将代码更改为:
Rails.application.config.middleware.use OmniAuth::Builder do
configure do |config|
config.path_prefix = '/myapp/auth' if RAILS_ENV == 'production'
end
provider :facebook, 'APP_ID', 'APP_SECRET'
end
Run Code Online (Sandbox Code Playgroud)
现在它就像一个魅力.