2011-06-20 28 views
2

使用rails 3 + devise + omniauth轉到facebook連接。在權限對話框中,如果用戶點擊「不允許」的用戶被重定向到:OmniauthCallbacksController#失敗 - 當點擊「不允許」facebook連接

Started GET "https://stackoverflow.com/users/auth/facebook/callback?error_reason=user_denied&error=access_denied&error_description=The+user+denied+your+request." for 127.0.0.1 at Mon Jun 20 16:54:42 -0700 2011 
    Processing by Devise::OmniauthCallbacksController#failure as HTML 
    Parameters: {"error_description"=>"The user denied your request.", "error_reason"=>"user_denied", "error"=>"access_denied"} 
Redirected to http://localhost:3000/users/sign_in 
Completed 302 Found in 2ms 

我怎樣才能得到控制和服務.js文件中優雅地處理這個問題。現在,它正在重定向到根,並顯示該網站是一個小小的對話框。

想法?謝謝

回答

5

似乎你從設計中使用omniauthable。在這種情況下,您可以看到Devise :: OmniauthCAllbackController#失敗操作代碼here

所以,你獲得你需要創建一個控制器,該控制器說的那樣omniauth_controller -

class OmniauthController < Devise::OmniauthCAllbackController 

    def failure 
     #handle you logic here.. 
     #and delegate to super. 
     super 
    end 
end 

這應該工作。你還需要爲你的omniauth控制器添加「devise_for」路由。

+0

謝謝嘗試上述,但它沒有采取。你是什​​麼意思「還需要爲你的omniauth控制器添加」devise_for「路由」? – AnApprentice

+0

對於類似類型的問題,請參閱http://railscasts.com/episodes/236-omniauth-part-2。在這裏,您應該查看註冊控制器如何使用它的操作來覆蓋設備操作。還有路徑添加到routes.rb文件作爲 - devise_for:users,:controllers => {:registrations =>'registrations'} 如果您需要任何背景,您也可以檢查第一集。 – rtdp

+1

這很奇怪我有完全相同的問題,我已經繼承了回調控制器,並把我自己的失敗方法,和日誌甚至說'處理由用戶:: OmniauthCallbacksController#失敗爲HTML'但是我的代碼中沒有實際上執行...仍然看着它 – brad

相關問題