ユニバーサルログインの推奨
Auth0はユニバーサルログインオプションを提供し、独自に作成したカスタムサインアップ・ログインページや、Auth0ライブラリーに埋め込みのものに代わって使用できるようにしています。サインアップ・ログインオプションを提供する予定で、アプリケーション名やロゴ、背景色だけをカスタマイズすればよい場合は、ユニバーサルログインを使えば実装が簡単になります。
Lockの使用
Lockはカスタムフィールドでのサインアップをサポートします。 LockのadditionalSignUpFields
オプションは、データベースサインアップでのみ機能します。ソーシャルIDプロバイダーを使ったサインアップの場合、Lockを使ってこれらのフィールドを同じ方法で収集することはできませんが、Lockを使ったソーシャルサインアップでも追加カスタムフィールドの収集を可能にするオプションが2つあります。
別のページへリダイレクトする
ソーシャルプロバイダーのサインアップでLockを使い、カスタムフィールドデータを収集する1つ目の方法は、リダイレクトルールを使用して、追加情報を求める別のページにユーザーをリダイレクトしてから戻し、認証トランザクションを終了させる方法です。プログレッシブプロファイリング
もう1つの方法は、ユーザープロファイルを時間をかけて徐々に構築していくプログレッシブプロファイリングを使用します。サインアップ時は必要最小限の情報を収集し、その後、ユーザーがアプリとやり取りする度に少しのデータ(たとえば、1つの質問で)を収集してプロファイルを完成させます。サインアップにソーシャルIdPを使用する目的は、簡単で効率的なサインアッププロセスをユーザーに提供することなので、この方法を使えば、負担を抑えながら欲しい情報を収集することができます。APIの使用
カスタムフィールドをキャプチャするサインアップフォームを作成する
name
はユーザープロファイル属性で、color
はカスタムフィールドです。
現時点では、サインアップ時にユーザーが入力したカスタムフィールドを検証する方法がありません。検証は、ログイン時にAuth0 Ruleから行うか、アプリケーションでカスタムのserver-side(サーバー側) ロジックを使用して行わなければなりません。
フォームデータを送信する
Auth0の/dbconnections/signupエンドポイントにPOST要求を送信します。 次のものを送信する必要があります:- アプリケーションの
client_id
- サインアップするユーザーの
email
とpassword
- ユーザーのデータを保存するデータベース
connection
の名前 given_name
、family_name
、name
、nickname
、picture
を含む、更新したい任意のユーザープロファイル属性user_metadata
の一部として任意のカスタムフィールド
カスタムフィールドの制限
ユーザーがサインアップすると、カスタムフィールドはuser_metadata
の一部として送信されます。このフィールドには次のような制限があります。
user_metadata
に含められるフィールドは10個までuser_metadata.field
値は文字列でなければならないuser_metadata.field.value.length
は500文字未満user_metadata.field.value.length
は100文字未満user_metadata
の現在のサイズ制限は16 MB
リダイレクトモード
ログインに成功すると、Auth0はユーザーを、クエリ文字列内の(id_token
)とともに構成済みCallback URLにリダイレクトします。
サーバーは、その後、APIv2を呼び出して必要なカスタムフィールドをユーザープロファイルに追加します。
サインアップフォームにユーザー名を追加する
よく行われるサインアップのカスタマイズは、ユーザー名を追加することです。 この機能を有効にするには、ダッシュボードの[Connections(接続)]>[Database(データベース)]セクションに移動して、編集したい接続の [Settings(設定)] タブにある [Requires Username(ユーザー名を必須にする)] 設定をオンにします。 カスタムフォームでusername
フィールドをキャプチャして、要求本文にusername
を追加します。