質問: ### 前提・実現したいこと Ruby on RailsのDeviceでユーザ認証をおこなうサービスの運用をしておりますが、 FaceBookと連携する必要性が生じたため、Omniauthの導入を検討しております。 既存のユーザについても、今後は可能な限りFaceBook連携をしてもらいたいと思っております。 ### 発生している問題 現在もユーザがいるサービスで途中から、通常のフローでOmniauthを導入しようとすると以下の問題が発生するかと思います。 ・既存ユーザがログインページでFaceBookログインをおこなうと新規で別のユーザが作成される。 既存ユーザがFaceBook連携するために参考となるページ、もしくは手順等をご存知でしたらご教示ください。 宜しくお願い致します。
回答: 既存ユーザーがログインする情報が変わってしまいますが、 1、ログイン後に、Facebook連携などのボタンを用意する。 2、既存ユーザーがFacebookのOAuthを行う 3、既存の認証に使われている情報を更新(uid, providerなど) 4、以降からFacebookでログインさせる 今まで使用していたメールアドレスでのログインはできません。 もしもさせたいなら、 ユーザーの情報と認証の情報をDBで別テーブルに分ける。 Userテーブル, Accoountテーブル UserとAccountを一対多のリレーションにする。 Accountテーブルに認証情報を集約(deviseの情報はここに持たせる) バッチ処理などで既存のデータをAccountテーブルとUserテーブルに流し込む 以降Userは認証のやり方を複数持てることになる。 軽くになりますがこんな感じでしょうか??