我最近在实时应用程序中发现了一个错误。如果用户已经使用给定的电子邮件进行了注册,后来又尝试使用“继续使用Facebook”创建帐户:
错误
ActiveRecord :: RecordInvalid OmniauthCallbacksController#facebook
验证失败:电子邮件已经被接收。
我假设存在一种添加错误并安全返回到用户注册页面的标准方法。这是Omniauth的内置功能吗?
def self.from_omniauth(auth)
# check if a user has already signed up without a provider
if self.where(email: auth.extra.raw_info.email, provider: nil).exists?
# add errors and return to user sign-up path
end
where(provider: auth.provider, uid: auth.uid).first_or_create do |user|
user.provider = auth.provider
user.uid = auth.uid
user.email = auth.extra.raw_info.email || ''
user.name = auth.extra.raw_info.name
user.confirmed_at = Time.now
user.save!
end
end
谢谢,很抱歉,我对后端如此糟糕。