私の登録システムは通常、4つのことを要求します:ユーザーのフルネーム、電子メール、優先ユーザー名、およびパスワード。
ユーザーがアカウントを簡単かつ迅速に作成できるように、4つのoauth2登録サービスを追加したいと思います。
これを行うための3つの方法を見ることができます。あるいは、私がまだ考え出していないエレガントなものがあるかもしれません。何を選ぶか迷っています。ユーザー名の競合と使いやすさが心配です。
方法1
ユーザーは、4つのサービスの1つを表すボタンをクリックします。彼らは承認を許可することを確認し、ログインします。サーバーで選択されたユーザー名と、ユーザー名が表示されるインターフェイスのどこかに電子メールが届きます。
このスキームでは、データベースとユーザー名の衝突がない場合、サーバーはサービスのユーザー名を選択します。ユーザー名の衝突があるisである場合、サーバーは追加します。ユーザー名に「2」。
方法2
この方法では、クリックして認証し、コールバックURLまたは元のページでユーザー名の入力を求められます。ユーザー名は、サーバーが想定するとおりに事前に入力されています。少し不器用ですが、今では、メールがスパムに送られる場合でも、ユーザー名を知っています。
方法
2段階の登録。ユーザーは(1)ユーザー名を選択し、次に(2)次の画面でフルネーム/メール/パスワードを選択するか、oauth2を介してサービスにリンクします。次に(3)リンクを承認します。
観測:
もしあれば、どの方法を選択すべきかについての考え
これは、実際にはシステムの要件と、方法1と方法3の間で選択する負荷によって異なります。
私は、ほとんどの場合、方法1はシステムのユーザーによって不快感を抱くであろうと主張します。ユーザーは、作成されたユーザー名に関して選択できる必要があり、提供するサービス全体で統一されたユーザー名である必要があります(そうでない場合は、登録する理由そもそもあなた)。
方法2はほとんどの場合実装が難しく、多くの不整合が生じる可能性があります。
方法3は、システムの負荷、ユーザーの要件、およびユーザー名のロック時間の調整に実際に依存します。後で維持したり拡張したりするのは難しいと思います。
要約すると、私はあなたに次のことを勧めます:
確定したユーザー名の選択肢をユーザーに提供する
このユーザー名をサービス全体で統一します。
この4つのサービスを管理している場合は、同じ順序で登録することで提供できます。衝突の撤回を確認し、ユーザーに別のユーザー名を尋ねます。
そうでなければ、それはおそらく実行不可能であり、ユーザーがシステムと対話する方法によって異なります-サービスから一貫したユーザー名を提供し、マップをサービスの実際の(おそらく生成された)ユーザー名に保存します。
4つのサービスのシングルサインオンを意味しますか。 OAuthの場合、FacebookまたはGoogleのようなものを使用してユーザーを認証し、ユーザーの役割に基づいて4つのサービスのいずれかまたはすべての使用を許可する必要があります。