railsでfacebookを用いた、ソーシャルログイン(および新規登録)を実装

自身の記憶定着用の備忘録

 

【参考にした記事】

device:gemの公式

https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview

 

実際の実装に使用させていただいた記事

https://qiita.com/keirof1892/items/4d086e5ed0872dee7dac

 

deviceを使わず実装しているため、概念的な理解に使用させていただいた記事

https://qiita.com/memetics/items/214babcebae32c52933c

 

実装の流れ

facebook divに登録

②omniauthの導入

snsからの情報を記録するテーブル(sns_credential )の作成

④userとsns_credentialアソシエーションの設定

facebookから情報を取得することを許可するための環境変数の設定

⑥userモデルのdeviseに:omniauthable,omniauth_providers:の追加

self.find_oauth(auth)メソッドをuserモデルに設定

 facebookから得た情報はauth.info.〇〇で表現できる。

 メソッド内の条件分岐は

 1.自身のアプリにすでにsns_credentialの登録があるユーザーかどうか

 2.自身のアプリにすでにuserの登録があるかどうか

 分ける。

 条件分岐の意図は  userがない場合は新規作成(sing_up)、

           userある場合は(sign_in)させるため.

      sns_credentialのテーブルにすでに、データが存在する場合は、

  そのデータを用い て、ログインする。sns_credentialの情報がない場合は、

  facebookから取得した情報を登録し、その情報を持ってログインする。