大家好,我想用 ruby-china 的源码搭网站,在注册这一块,我不想提供直接注册,而是通过第三方登录,比如 facebook, weibo 等,好处就是我不用验证 email 的有效性了,初步设想如下:
(1)user 个加一字段,比如 provider, 默认为 0
(2)用户点击右上角的登录链接,在页面上按下 Facebook 的图片去 Facebook 登录,然后返回网站,这之后在 app/model/user/omniauth-callbacks.rb 里面添加用户信息,如 email,city 等,但不设置 user.login,密码字段就像原来的代码用 Devise.friendly_token[0, 20] 生成。
(3)在 Users::OmniauthCallbacksController 用 email 设定用户登录,并检测(1)中的 provider 字段,如果为 0, 那就定位到一个自定义的设定用户名和密码的页面,比如说 account#register, 当用户输入 unique 的用户名和有效的密码后,provider 设为 1, 进入首页。
(4)如果用户下次再点 Fackbook 登录,并成功返回网站后,因为会检测到 provider 为 1,那直接让用户登录就可以。
现在我卡在第 3 步上,因为对 devise 不熟悉,所以 ruby-china 的代码我不知道怎么改: app/controller/users/omniauth-callbacks-controller.rb
sign_in_and_redirect @user, :event => :authentication, :notice => "登陆成功。"
我问题是,如何重定向到一个自定义的页面上去,我尝试过的代码如下,不成功:
sign_in @user
redirect_to controller => 'account', action =>'register'
另外,我希望当 provider 为 0 的时候,用户在第 3 步设定登录之后,他设置用户名和密码之前,不管点击什么链接,都定位到account#register去,这应该怎么实现呢?
新手做网站,望各位多帮忙,谢谢!