我正在尝试(再次)使用Rails 4,devise和omniauth设置身份验证.
我试着按照这篇文章中的例子:Rails 4,Devise,Omniauth(有多个提供者)
我安装了这些宝石:
gem 'devise'
gem 'omniauth-google-oauth2'
gem 'omniauth-facebook'
gem 'omniauth-twitter'
gem 'omniauth-linkedin-oauth2'
gem 'oauth2'
Run Code Online (Sandbox Code Playgroud)
我有一个用户模型和一个身份验证模型.
我有:
User.rb:
has_many :authentications
def disapprove
self.approved = false
end
def approve
self.approved = true
end
Run Code Online (Sandbox Code Playgroud)
SOCIALS = {facebook:'Facebook',google_oauth2:'Google',linkedin:'Linkedin'}
def self.from_omniauth(auth, current_user)
authentication = Authentication.where(:provider => auth.provider,
:uid => auth.uid.to_s,
:token => auth.credentials.token,
:secret => auth.credentials.secret).first_or_initialize
authentication.profile_page = auth.info.urls.first.last unless authentication.persisted?
if authentication.user.blank?
user = current_user.nil? ? User.where('email = ?', auth['info']['email']).first : current_user
if user.blank?
user = User.new
user.skip_confirmation!
user.password = …Run Code Online (Sandbox Code Playgroud)