クラス Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController があり、 after_omniauth_failure_path_for メソッドをオーバーライドしています:
protected
def after_omniauth_failure_path_for resource
'/report_failure'
end
しかし、呼び出されるのはスーパー 1 です。
パススルーの回避策が原因であると思われます:
devise_for :users do
get '/users/auth/:provider' => 'users/omniauth_callbacks#passthru'
end
この問題を克服する方法を知っている人はいますか? 私はDevise 2.0.4を使用しています
これはログ ファイル レポートです。
Started GET "/users/auth/facebook/callback?error_reason=user_denied&error=access_denied&error_description=The+user+denied+your+request." for 77.124.184.115 at 2012-04-19 11:34:46 +0000
Processing by Devise::OmniauthCallbacksController#failure as HTML
Parameters: {"error_reason"=>"user_denied", "error"=>"access_denied", "error_description"=>"The user denied your request."}
Redirected to http://myapp.com/users/sign_in
Completed 302 Found in 1ms (ActiveRecord: 0.0ms)
編集:パススルーリダイレクトを削除すると、機能します:
# def devise_for :users do
# get '/users/auth/:provider' => 'users/omniauth_callbacks#passthru'
# end
ありがとうございました