質問: クライアント側をiOSアプリ、サーバー側をrailsで用意したアプリを開発しようとしています。 ユーザーの認証をfacebook, emailと二種類用意しようと思っているのですが、その場合ユーザー管理について質問です。 サーバー(というかDB)でユーザー情報を管理する際に、facebookからサインアップしたユーザーとemailでサインアップしたユーザーを分別するのはどうしたらいいのでしょうか。 ユーザーテーブルの中にemail, passwordのカラムを用意したとして、facebookからログインした場合はpasswordはないですし、ユースケースとして一度facebookでログインしたユーザがその後emailからログインしようとした場合、emailが一致するものがあれば「あなたはfacebookログインを利用しています」などのナビゲーションもしたいと思っています。 またその際によく使われるrails及びiosのフレームワークなどがありましたら教えていただきたいです。 よろしくお願いします。
回答: 単一のプロバイダー(facebookなど)からのみサインアップするのであれば、ユーザーモデルに、uidとproviderを定義するのが良いかと思います。 uidにはプロバイダーのidを保存して、prividerにはfacebookとわかるような識別子をつけると分別できます。 railsのマルチプロバイダーライブラリには、OmniAuthがよく使われます。facebookであればOmniAuthのプラグインがすでにありますので、利用するのが良いかと思います。 OmniAuth OmniAuth-facebook