2010-10-24 27 views
2

我想從頭開始使用OmniAuth構建一個新的rails 3應用程序。目前,我只是有一個完全空的應用程序,在那裏我已經添加omniauth到Gemfile中,並在配置/初始化看起來像這樣增加了omniauth.rb:Rails 3,OmniAuth和乘客拋出RoutingError

Rails.application.config.middleware.use OmniAuth::Builder do 
    provider :facebook, 'APP_ID', 'APP_SECRET' 
end 

(除非用正確的應用程序ID和祕密而不是當然佔位符)

這似乎工作從我的開發機器使用Webrick運行,但Facebook由於localhost:3000未註冊爲應用程序提供了一個錯誤。所以我將它上傳到生產服務器進行測試。這裏的請求似乎完全繞過了機架層,並最終導致拋出一個RoutingError的rails,因爲在routes.rb中沒有定義稱爲/ auth/facebook的路由。

服務器運行apache 2.2,ruby 1.8.7,rails 3.0.1,rack 1.2和passenger 3.0.0。有什麼明顯的我失蹤了?

順便說一句,應用程序安裝到一個子網址,即http://www.mydomain.net/myapp

回答

4

發現了自己:

改變了代碼:

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 

現在,它就像一個魅力。