用户使用Yahoo帐户使用Google登录

时间:2018-07-05 14:35:32

标签: ruby-on-rails oauth omniauth google-oauth2 omniauth-google-oauth2

我有两个问题。我有一个用户试图在Google登录上使用Yahoo帐户登录,但我不知道他们如何设法做到这一点,因此我可以重现此问题。另一个问题是,它似乎确实对它们进行了身份验证,但却引发了ActiveRecord::RecordNotUnique: PG::UniqueViolation: ERROR: duplicate key value violates unique constraint "index_users_on_email"错误。

用户已经在站点上注册,他们的电子邮件在数据库中,但是由于某种原因,它试图再次创建它们。这是我用来验证它们的代码:

  def self.find_or_create_from_oauth!(auth)
    user = User.find_or_initialize_by(email: auth.info.email) do |u|
      u.first_name = auth.info.first_name
      u.last_name = auth.info.last_name
      u.image_url = auth.info.image
    end
    user.save!

    user.authentications.find_or_initialize_by(provider: auth.provider, uid: auth.uid).tap do |a|
      a.expires_at = Time.at(auth.credentials.expires_at)
      a.token = auth.credentials.token
      a.save!
    end

    user
  end

当尝试以相同的方式在控制台中找到用户时,我成功做到了。

0 个答案:

没有答案