1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Rails6 OmniAuth twitter認証 emailの条件分岐

Last updated at Posted at 2020-09-27

永遠の初心者による自分のためのメモ。
Rails学習開始3ヶ月。
とりあえずこれで動きました程度に考えていただければ幸いです。
こうした方がええやんと言うご意見がある方は優しいコメント頂けると嬉しいです。

この記事の目的

twitter認証はメールアドレスを取得しないので、ランダムメールアドレスを生成する。
google、facebook認証は、正規のメールアドレスを取得する。
twitterはランダムアドレス。他は、正規のアドレスで条件分岐させる。

環境

Ruby 2.7.1p83 Rails 6.0.3.3

前提条件

deviseによるログイン機能実装済み。

OmniAuthによるTwitter、google、facebookなどのログイン認証機能実装済み。

私は、以下の記事を参考にさせて頂きました

・手続き関連 https://qiita.com/kazuooooo/items/47e7d426cbb33355590e ・OmniAuth導入 https://qiita.com/LuckHackMahiro/items/9dfca6e67777a2161240

条件分岐 : TwitterかTwitter以外

機能実装できている前提で、
user.rb

  def self.first_or_create_from_omniauth(auth)
    where(provider: auth.provider, uid: auth.uid).first_or_create do |user|
      user.provider = auth.provider
      user.uid = auth.uid
      user.name = auth.info.name
      user.password = Devise.friendly_token[0, 20]
      user.email = auth.info.email
      user.email = User.dummy_email(auth) if user.provider == "twitter"#ここ
      url = URI.parse("#{auth.info.image}") 
      avatar = url.open 
      user.image.attach(io: avatar, filename: "user_avatar.jpg")
    end
  end

としたら、twitterではランダムアドレス。
google、facebookでは正規のアドレスが取得する事ができました。

条件分岐がうまくいって嬉しかったです。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?