【发布时间】:2012-03-01 23:08:23
【问题描述】:
关注后:
https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview
我可以通过 Facebook 注册用户。但我正在努力定义自己的重定向。
显然,已经注册/登录 facebook 的现有用户重定向到我的应用程序并继续使用是完美的,但对于通过我感兴趣的 facebook 新创建的用户来说,情况就是这样。
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
def facebook
# You need to implement the method below in your model
@user = User.find_for_facebook_oauth(request.env["omniauth.auth"], current_user)
if @user.persisted?
flash[:notice] = I18n.t "devise.omniauth_callbacks.success", :kind => "Facebook"
sign_in_and_redirect @user, :event => :authentication
else
session["devise.facebook_data"] = request.env["omniauth.auth"]
redirect_to new_user_registration_url
end
end
end
user.persisted 是什么意思? find_for_facebook_oauth 的作用与设计 wiki 页面规定的相同;即通过电子邮件查找用户,如果存在则返回,如果不存在,则使用自动生成密码创建新用户。
但我需要它将新创建的用户重定向到他们设置密码的页面。我不希望存根密码持续存在,我希望用户立即看到一个屏幕,以 a) 确认他们的姓名和 b) 确认他们的密码。
我在views/devise/invitations/edit 中为接受邀请(通过https://github.com/scambra/devise_invitable/)的人实现了这样一个屏幕——如果它可以工作,这将非常适合这个。
我应该在哪里添加重定向以及这种重定向采用什么格式?我发现上面的 facebook 方法很难解释。我不明白为什么它会重定向到新的用户注册 url - 用户已创建或存在,那么持久性与什么有关?
显然很困惑,因此感谢您的帮助。 :)
谢谢,
戴夫
【问题讨论】:
标签: ruby-on-rails facebook oauth devise