class CallbacksController < Devise::OmniauthCallbacksController def facebook request_data("Facebook","devise.facebook_data") end def twitter request_data("Twitter","devise.twitter_data") end def google_oauth2 request_data("Google","devise.google_oauth2_data") end private def request_data(provider,provider_session) @user = User.from_omniauth(request.env["omniauth.auth"]) if @user.persisted? sign_in_and_redirect @user, :event => :authentication flash[:notice] = I18n.t "devise.omniauth_callbacks.success", :kind => provider else session[provider_session] = request.env["omniauth.auth"] redirect_to new_user_registration_url end def failure redirect_to root_path end end end