2013-03-05 134 views
1

我跟着Rails Casts Episode #360關於如何集成Facebook登錄。Ruby on Rails中的Omniauth路由錯誤

當我點擊「登錄與Facebook」,我得到這個錯誤:

Routing Error 

No route matches [GET] "/auth/facebook" 

這裏是我的路線文件:

Frostfiress::Application.routes.draw do 
    ActiveAdmin.routes(self) 

    devise_for :admin_users, ActiveAdmin::Devise.config 

    get "profiles/show" 
    #get 'questions/:tag', to: 'questions#index', as: :tag 
    #get 'places/:tag', to: 'places#index', as: :tag 
    match 'auth/:provider/callback', to: 'sessions#create' 
    match 'auth/failure', to: redirect('/') 
    match 'signout', to: 'sessions#destroy', as: 'signout' 

    resources :places 


    devise_for :users 

    devise_scope :user do 
     get 'register', to: 'devise/registrations#new', as: :register 
     get 'login', to: 'devise/sessions#new', as: :login 
     get 'logout', to: 'devise/sessions#destroy', as: :logout 
     get 'password/change', to: 'devise/passwords#edit', as: :password 
    end 

    resources :answers 

    resources :questions 


    root :to => "questions#index" 

    get '/:username', to: 'profiles#show' 

其他所有的文件我已經在改變RailsCast與教程中的完全相同。

我的AppId和Secret正在工作,但現在我得到路由錯誤。

有什麼建議嗎?

感謝

這是耙路線的結果:

profiles_show GET  /profiles/show(.:format)     profiles#show 
              /auth/:provider/callback(.:format)  sessions#create 
        auth_failure   /auth/failure(.:format)     :controller#:action 
         signout   /signout(.:format)      sessions#destroy 
         places GET  /places(.:format)       places#index 
           POST  /places(.:format)       places#create 
        new_place GET  /places/new(.:format)      places#new 
        edit_place GET  /places/:id/edit(.:format)    places#edit 
         place GET  /places/:id(.:format)      places#show 
           PUT  /places/:id(.:format)      places#update 
           DELETE  /places/:id(.:format)      places#destroy 
       new_user_session GET  /users/sign_in(.:format)     devise/sessions#new 
        user_session POST  /users/sign_in(.:format)     devise/sessions#create 
      destroy_user_session DELETE  /users/sign_out(.:format)     devise/sessions#destroy 
     user_omniauth_authorize   /users/auth/:provider(.:format)   devise/omniauth_callbacks#passthru {:provider=>/(?!)/} 
     user_omniauth_callback   /users/auth/:action/callback(.:format) devise/omniauth_callbacks#(?-mix:(?!)) 
       user_password POST  /users/password(.:format)     devise/passwords#create 
      new_user_password GET  /users/password/new(.:format)    devise/passwords#new 
      edit_user_password GET  /users/password/edit(.:format)   devise/passwords#edit 
           PUT  /users/password(.:format)     devise/passwords#update 
     cancel_user_registration GET  /users/cancel(.:format)     devise/registrations#cancel 
      user_registration POST  /users(.:format)       devise/registrations#create 
     new_user_registration GET  /users/sign_up(.:format)     devise/registrations#new 
     edit_user_registration GET  /users/edit(.:format)      devise/registrations#edit 
           PUT  /users(.:format)       devise/registrations#update 
           DELETE  /users(.:format)       devise/registrations#destroy 
         register GET  /register(.:format)      devise/registrations#new 
         login GET  /login(.:format)       devise/sessions#new 
         logout GET  /logout(.:format)       devise/sessions#destroy 
         password GET  /password/change(.:format)    devise/passwords#edit 
         answers GET  /answers(.:format)      answers#index 
           POST  /answers(.:format)      answers#create 
        new_answer GET  /answers/new(.:format)     answers#new 
        edit_answer GET  /answers/:id/edit(.:format)    answers#edit 
         answer GET  /answers/:id(.:format)     answers#show 
           PUT  /answers/:id(.:format)     answers#update 
           DELETE  /answers/:id(.:format)     answers#destroy 
        questions GET  /questions(.:format)      questions#index 
           POST  /questions(.:format)      questions#create 
        new_question GET  /questions/new(.:format)     questions#new 
       edit_question GET  /questions/:id/edit(.:format)    questions#edit 
         question GET  /questions/:id(.:format)     questions#show 
           PUT  /questions/:id(.:format)     questions#update 
           DELETE  /questions/:id(.:format)     questions#destroy 
          root   /          questions#index 
           GET  /:username(.:format)      profiles#show 
+0

運行耙路徑是否顯示omniauth路由? – Nazar 2013-03-05 10:09:36

+0

@Nazar這些是我能看到用omniauth完成的唯一路線/auth/:provider/callback(.:format)sessions#create auth_failure /auth/failure(.:format):controller#:action signout/signout (。:format)sessions#destroy – 2013-03-05 10:13:18

+0

您使用的是什麼版本的Devise? – varunvlalan 2013-03-05 10:23:46

回答

-1

不會自動生成,路徑/ auth /中的Facebook,如果在那裏它實際上不會做任何事情,除非你將其映射到一些控制器功能。但是你不應該這樣做。

確保您確實向Facebook發送了請求,否則omniauth將無法執行任何操作。

http://developers.facebook.com/docs/howtos/login/getting-started/

你應該要麼重定向到/ auth /中的Facebook /回調對失敗是成功或/ auth /中故障處理Facebook的您的要求的迴應。

+1

/auth/facebook由omniauth gem和添加的中間件生成。 – Senjai 2014-01-02 19:07:21