patorashのブログ

方向性はまだない

gem doorkeeperの承認画面に遷移しない場合があった

gem doorkeeperで連携アプリケーションにログインをさせようとしたところ、認証後に権限の承認画面に遷移せずに普通に認証アプリケーションのログイン後の画面に遷移してしまいました。本来ならば、連携アプリケーションにログインしてほしいのに…。

原因

deviseによって使われるメソッドである、after_sign_in_path_forをオーバーライドしていたからでした。

after_sign_in_path_forメソッドは、ログイン後に遷移させる場所を定義するためのメソッドなのだが、これを上書きしていたため、リダイレクト先が認証アプリケーションのログイン後の画面のみになっていました。

before

def after_sign_in_path_for(resource)
  root_path
end

after

stored_location_forというメソッドがあるみたいだったので、これがあるときはこちらを使う、という設定に変更しました。

def after_sign_in_path_for(resource)
  stored_location_for(resource) || root_path
end

Qiitaにも記事がありました。

qiita.com