我使用设备和omniauth 在我的应用程序上创建了注册/登录功能。用户可以通过注册表单进行注册,然后登录。他们也可以通过 Facebook 登录。
但是,当我使用自己的电子邮件地址 john@whosjohn.com 注册,然后使用我的 Facebook 帐户(也使用 john@whosjohn.com)登录时,我创建了 2 个不同的用户。
我已经检查了 User.all 发生了什么,当我通过 Facebook 登录时,我没有保存电子邮件地址。值为空。
有人可以解释我如何将链接到他的 Facebook 帐户的用户电子邮件地址保存到我的用户表中吗?
用户.rb
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable,:omniauthable, :omniauth_providers => [:facebook]
def password_required?
false
end
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
end
end
end