ログインの仕方によってコールバックで呼び出すメソッドを切り替えたいもののOmniAuthで上手くやる方法がパッ見つからなかったので利用した方法。ログイン前の画面からパラメータをコールバックに渡してパラメータの値で処理を分岐させる。が、これまたコールバックに渡すパラメータの保持されているところがわかりにくかったのでメモ。
例えば「flag=1」という値をtwitterでOAuth認証した後に呼び出されるコールバックに渡したい場合
twitterの認証画面に移るリンクにクエリストリングとして「flag=1」を追加
ログイン画面.html.erb
<%= link_to, 'twitterでログイン', '/auth/twitter?flag=1' %>
クエリストリングとして与えたパラメータはrequest.env['omniauth.params']にハッシュ値として保持されているのでこれを取り出す。
認証後に呼び出されるコールバック内
flag = request.env['omniauth.params']['flag']