【发布时间】:2014-12-16 12:40:09
【问题描述】:
我一直在使用 Devise + OmniAuth Twitter 向我的门户网站验证用户身份。我目前面临两个问题。
当用户访问 /users/sign_up 时,表单是公开可见的。相反,我想将他重定向到 Twitter 身份验证页面。
当用户访问 /users/sign_up 时,电子邮件表单是可见的。他从 Twitter 成功注册后,我正在使用此表单获取用户的电子邮件地址。
有人可以帮我解决直接访问表单的人的这个问题吗?
添加代码片段:
#config/routes.rb
devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }
devise_scope :user do
get "skcript1625" => "devise/sessions#new", as: :login
get "logout", to: "devise/sessions#destroy", as: :logout
end
# app/models/user.rb
devise :database_authenticatable, :registerable, :rememberable, :trackable, :validatable
def self.from_omniauth(auth)
where(provider: auth.provider, uid: auth.uid).first_or_create do |user|
user.email = auth.info.email
user.password = Devise.friendly_token[0,20]
user.name = auth.info.name # assuming the user model has a name
user.profileimg = auth.info.profileimg # assuming the user model has an image
end
end
【问题讨论】:
-
请注意,twitter 不会在 auth hash 中提供用户的电子邮件。
标签: ruby-on-rails twitter devise omniauth