Facebookを使用してユーザーを認証しています。従来のユーザー名/パスワードのログインおよび登録フォームも用意しています。とにかく、ユーザーがFacebookでログインすることを選択した場合、次の手順を使用します。
電子メールは、重複した電子メールアドレス(また、一意のインデックスのために現在データベースで許可されていない)を望まないので、理にかなっています。ユーザーがその電子メールアドレスですでにサインアップしている場合、新しいメールアドレスは作成されません。それらのユーザー。代わりに、以前に登録されたユーザーをプルします。
これは健全なアプローチですか?すべての可能性を調査して、ユーザーが従来の登録フォームで登録しようとするとどうなるのだろうと思っていましたが、最初のFacebookログインからそのメールでアカウントをすでに作成しているため、重複したメールは許可しません。 Facebookを使用してログインすることを決定したので、彼らはその方法で立ち往生しています。これは一般的な/大丈夫なアプローチですか?
また、意図せずに、従来の登録フォームを最初に使用し、アカウントをそのように設定した場合、パスワードが設定されるため、フォームを使用してログインするか、FBでログインすると、ユーザーアカウントはメールで取得されます。ただし、初めてFBでログインすることを選択し、その方法でアカウントが作成された場合(pwは取得しません)、常にFBのみを使用する必要があります。これが問題になるかどうかはまったくわかりませんが、オプションを使用したいと思います-最初にログイン/登録することを選択したことを意味します-それからあなたはこだわります:)
ユーザーが複数のログインでサインアップするのは少し新しいので、「what ifs」などで少し頭がいっぱいです。これに関するアドバイスと一般的なアプローチをいただければ幸いです。ありがとう
または、電子メールフィールドのインデックスを緩めて、Facebook IDを格納するフィールドをどこかに追加し、アプリケーションレベルで、重複する電子メールアドレスと異なるログイン方法のユーザー間の区別を許可するかどうかを決定します(そのため、ユーザーに通常登録されているユーザーアカウント、および/または別のFacebookログイン認証/作成されたユーザーアカウントで、どちらも同じメールアドレス-ログインの方法が異なる-少なくともユーザーがFacebookアカウントを削除した場合、当社のメールアドレスでアカウントを作成できます登録フォーム)
アプリでユーザー/プロファイルを認証から分離します。これは、使用できるアプローチかもしれません。特に将来、Twitterやその他の認証プロバイダーをシステムに追加する可能性がある場合は、.
基本的に、システムに一意のユーザーIDとプロバイダーが提供する一意のIDを格納する資格情報と呼ばれるテーブルを作成します。ユーザーはプロバイダーでメールを変更する可能性があるため、メールは適切ではありません。 Facebookはトークン内の各ユーザーに一意のIDを提供します。
ユーザーが認証されると、資格情報テーブルで一致するプロバイダーIDを探します。 (ユーザーがFacebookでログインしたときにTwitterログインの一致が見つかる可能性があるため、どのプロバイダーを記録するかを忘れないでください)。最後に、資格情報レコードと同じユーザーIDを持つシステム内の一致するユーザーを取得します。
実際には、多くの手順はありません。実際には、クエリが1つだけ必要です
select U.* from Users u
inner join Credentials on
u.userId=Credentials.userId
where Credentials.ProviderId =?
and Credentials.Provider=?
システムに保存されたユーザー名とパスワードはもちろん異なります。しかし、あなたはすでにそれをどう処理するか知っています。
ユーザーがFacebookからアクセスした場合でも、別のログインを要求することについて。これを行わないでください... Facebookからログインするオプションが表示され、システムでパスワードを作成する必要がある場合、これはユーザーとして私にとって最も苛立たしいことです。そのため、登録の途中でサイトを離れました。
一部のサイト(例: アサナ )は、あなたと同じ戦術を採用しています。サードパーティを使用して登録し、独自のログインを使用して再度登録しようとすると、すでに登録済みであり、サードパーティのログインにリダイレクトされました。逆の方向に進んでも、自分のパスワードを使用してログインできます。
他のサイト(例: Wunderlist )では、サードパーティを使用して登録した場合でも、パスワードを作成できます。
したがって、両方のアプローチが存在します。どちらを使用するかはあなた次第です。
最初の方法では、登録がより簡単になります。ログインエクスペリエンスはユーザーによって異なる場合がありますが、すべてのユーザーにとって同じくらい簡単です。
2番目の方法では、ログイン時にユーザーに統一されたエクスペリエンスを提供します。また、Facebookに偏執する場合に備えて、ログインの選択肢も提供します。