現在のデータベースの各ユーザー名とパスワードは、将来のデータベースの各サービスプロバイダーのユーザーIDに対応します。例えば:
user_id | group_id | username | password | twitter_user_id | facebook_user_id | google_user_id
1001 | 3003 | fred | abc123 | aaaaaaaa | bbbbbbbb | ccccccc
このような構造を使用すると、既存のログインメカニズムを引き続き使用できるだけでなく、ユーザーがfacebook / twitter/etcアカウントを現在のログインにリンクできるようにすることができます。データベースに何らかの形式のユーザーIDとグループIDが既に設定されていると想定していますが、そうでない場合は、これが最も簡単な方法だと思います。
既存のアカウントをユーザーのさまざまなサービスプロバイダーアカウントにリンクするには、さまざまな方法があります。既存の構造に適合し、ユーザーに最もシームレスなエクスペリエンスを提供するアカウントを選択するのは、実際にはあなた次第です。ユーザーが新しいサービスプロバイダーを自分のアカウントにリンクできるWebサイトの1つの可能なoauthフローは次のとおりです。
- ユーザーがサイトのログイン画面に移動します
- ユーザーは元のユーザー名とパスワードを使用してログインします
- ユーザーが自分のアカウントにリンクするサービスプロバイダー(Twitterなど)を選択する
- ユーザーはTwitterにリダイレクトされます
- ユーザーはTwitterのOAuth画面でTwitterのパスワードを入力し、あなたが必要だと言った情報にWebサイトがアクセスできるようにすることに同意します
- 次に、Twitterはユーザーをoauthコールバックページにリダイレクトします
- 返されたTwitterID(およびTwitterが返すその他の情報)を取得し、このユーザーに対してデータベースに配置します
- 今後、ユーザーはツイッターのみでログインできるようになります
ユーザーが1つのサービスプロバイダーを有効にすると、同じアカウントにアクセスするための2つの手段があります。
上記のプロセスに加えて、ユーザーが自分のアカウントで実行されたアクションを確認できるように、監査証跡を追加することをお勧めします。これはあなたが利用できる時間に依存するかもしれませんが、それはあなたに将来のカスタマーサポートの多くの苦痛な時間を安全にする可能性があります。ユーザーに伝えることができる情報が多ければ多いほど、またこの情報を管理するためにユーザーに与える力が大きいほど、自分で行う必要のある調査が少なくなり、ユーザーの問題を修正するために費やす時間が少なくなります。