私は Facebook Connect で少し作業を行っています。たとえば、スタック オーバーフローで、Facebook や Yahoo などの別のログイン プロバイダーを使用してログインでき、サイトが登録したユーザーの詳細を取得できるようにする方法を考えています。スタックオーバーフロー?私の知る限り、別の電子メール アドレスを使用して登録できた可能性があり、姓と名は一意の識別子ではありません。
2 に答える
それはすべて、ユースケースによって異なります。たとえば、電子メール アドレスを一意の識別子として使用します。Facebook でログインすると、マイ ポータルは Facebook からのメール アドレスも尋ねます。次に、一致する電子メール アドレスを持つユーザー オブジェクトをデータベースから検索します。
これを行う方法は複数あります。
- Facebook からのログインのみを許可します。そうすれば、すべてのユーザーを電子メール アドレスで確実に識別できます。
- Facebook 経由でのログインとユーザー名/パスワードも許可しますが、ユーザーは両方の場所で同じ電子メール アドレスを使用する必要があります。
- Facebook 経由でのログインとユーザー名/パスワードも許可し、ユーザーがそれぞれに異なる電子メール アドレスを使用できるようにします。これは最も複雑なオプションです。ほとんどのサイトでは、Facebook アカウントとサイト アカウントを「ペアリング」するようユーザーに要求することで、これを解決しています。これは、ユーザーが最初にセットアップするときにサイトにログインする必要があり、サイトにログインしている間は Facebook にログインできることを意味します。次に、サイトに Facebook ID が保存されます (この場合、電子メールは必要ありません。ユーザー ID をフィールドに保存するだけです)。この後、ユーザーは Facebook 経由でのみログインでき、Facebook ユーザー ID を独自のデータベース内の対応するユーザー オブジェクトとペアにすることができます。
ご不明な点がございましたら、コメント欄にご記入ください。:)
ほとんどの場合、facebook_uid などのユーザー テーブルに新しい列を追加します。次に、ユーザーが既存のアカウントを持っている場合、Facebook に接続する前にまずそのアカウントにサインインしてもらい、既存の user_id に対して facebook_uid を保存できます。次に、ユーザーが現れてすでに Facebook にサインインしている場合は、Web サイトにもサインインできます。ユーザーがサイトに既存のアカウントを持っていない場合は、単純にアカウントを作成します (Facebook のユーザー名を入力することもできます)。
複数のサインイン方法を許可したい場合は、プロバイダー (facebook、twitter、google など) とそのアカウントに関連付けられた ID との間のマッピングを保持する別のテーブルをユーザー テーブルに戻す可能性があります。
基本は、サードパーティのログイン システムでサインインするときに、それをサイトの現在のアカウントにマップするか、サイトにアカウントがまだ存在しない場合は新しいアカウントを作成し、アカウントをそれにマップすることです。明らかに、これをユーザーに明確にする必要があります。または、サードパーティを使用するときにまだサインインしていない場合に備えて、アカウントを統合する方法が必要です。また、新しいアカウントを作成する前に、Facebook からのメール アクセスを要求し、それを既存のアカウントにマッピングすることもできます。
ありがとう