【发布时间】:2016-09-05 18:50:09
【问题描述】:
我想分离我的 oauth 重定向路径。一个用于 facebook 和 google(register/info1),另一个用于 twitter(register/info2)。
- 我的用户在第一次注册时会转到
register/info(1/2)页面。 -
用户下次注册登录后,会转到
home/main,而不是register/info(1/2)但是
after_sign_up_path_for方法在omniauth_callback_controller中不起作用。所以,用户总是去register/info(1/2)。 目前,我将我的omniauth_callback_controllers.rb设置为这样。
类用户::OmniauthCallbacksController
def self.provides_callback_for(provider)
class_eval %Q{
def #{provider}
@user = User.find_for_oauth(env["omniauth.auth"], current_user)
if @user.persisted?
sign_in_and_redirect @user, event: :authentication
else
session["devise.#{provider}_data"] = env["omniauth.auth"]
redirect_to new_user_registration_url
end
end
}
end
[:twitter, :facebook, :google_oauth2].each do |provider|
provides_callback_for provider
end
def after_sign_in_path_for(resource)
auth = request.env['omniauth.auth']
@identity = Identity.find_for_oauth(auth)
@user = User.find(current_user.id)
if @user.persisted?
if @identity.provider == "twitter"
register_info2_path
else
register_info1_path
end
else
home_main_path
end
end
如果您有任何想法或相关文件,请告诉我。谢谢。
【问题讨论】:
标签: ruby-on-rails oauth devise