我正在使用Omniauth让用户注册Facebook帐户。当他们第一次点击auth链接时,我会将他们引导到注册页面,以便他们提供一些额外的信息,除非他们已经有我的申请帐户。
SessionsController
def create_facebook
#make an environment variable
auth = request.env['omniauth.auth']
if User.find_by_provider_and_uid(auth["provider"], auth["uid"])
user = User.find_by_provider_and_uid(auth["provider"], auth["uid"])
session[:user_id] = user.id
redirect_to lessons_path, flash[:notice] => "Signed in!"
else
#go to signup page to get additional info
redirect_to new_user_path(:auth => auth) #problem
end
end
在这种情况下,我使用URL中的参数传递整个auth哈希,因为我想在User.create_with_omniauth(auth)
中调用Users#new
。我应该避免这样做吗?还有其他选择吗?
答案 0 :(得分:0)
我可以看到一些方法:
可替换地:
render
来设置正确的视图)第三种更强大的替代方案,类似于会话方法,但更重要一点: