> ## Documentation Index
> Fetch the complete documentation index at: https://translations.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Lock.Android で新規登録に追加フィールドを設定する

# Lock.Android: 新規登録時のカスタムフィールド

**Lock.Android** では、新しいアカウントを作成する前にユーザーが入力する必要のある追加フィールドを指定できます。これらの追加フィールドは、ユーザーが基本フィールド (メールアドレス、ユーザー名、パスワード) を入力した後、2 つ目の画面に表示されます。

<div id="create-the-custom-fields">
  ## Custom Fields を作成する
</div>

4 つの必須パラメータをすべて指定して、新しい `CustomField` オブジェクトを作成します。

1. Icon: Icon として使用するリソースを指す `int` です (小さめのものを使用してください) 。
2. Type: このフィールドで使用する `FieldType` です。タイプによってキーボードレイアウトが決まり、場合によっては入力のバリデーションも行われます。
3. Key: 結果の JSON でこの値を識別する `String` です。重複はできません。フィールドキーが重複すると、2 つ目のフィールドは一覧から削除されます。
4. Hint: フィールド内のヒントとして表示するテキストの `@StringRes` です。

さらに、そのフィールドをユーザーのプロファイル内のどこに保存するかも指定できます。詳しくは、以下の [Storage](#storage) セクションを参照してください。

また、ユーザーには表示されないものの、サインアップ後に追加のメタデータを動的に含めるために使用できるフィールドを作成することもできます。

```kotlin lines theme={null}
// 通常フィールド
val nameField = CustomField(R.drawable.ic_name, FieldType.TYPE_NAME, "first_name", R.string.hint_first_name, CustomField.Storage.PROFILE_ROOT)

// 隠しフィールド
val androidField = HiddenField("android_version", Build.VERSION.SDK_INT.toString(), Storage.USER_METADATA)

val customFields = listOf(nameField, androidField)
```

必要なフィールドの数だけ、上記の手順を繰り返します。

<div id="use-the-custom-fields">
  ## カスタムフィールドを使用する
</div>

Lock の構築時に、`withSignUpFields()` メソッドを使用してカスタムフィールドの一覧を Lock インスタンスに渡します。

```kotlin lines theme={null}
val lock = Lock.newBuilder(auth0, callback)
              .withSignUpFields(customFields)
              //...
              .build(this)
```

アプリケーションのAuth0 Dashboardでサインアップを有効にしている場合、ユーザーは基本項目 (メールアドレス/ユーザー名、パスワード) の入力後に **Submit** を押すと、残りのフィールドの入力を求められます。サインアップを完了するには、すべてのカスタムフィールドを入力する必要があります。

サインアップ時には、追加フィールドは、選択した Storage オプションに応じて `user_metadata` 属性に追加されるか、root ユーザープロファイルに直接設定されます。これらのプロパティには、ユーザープロファイルを照会することでいつでもアクセスでき、Auth0 Dashboard の Users セクションからも確認できます。

<div id="field-types">
  ## フィールドの種類
</div>

各カスタムフィールドには、関連付けられる `FieldType` を 1 つだけ設定できます。

* TYPE\_NAME
* TYPE\_NUMBER
* TYPE\_PHONE\_NUMBER
* TYPE\_EMAIL

<div id="storage">
  ## 保存先
</div>

各カスタムフィールドに指定できる `Storage` は 1 つだけです。保存先として、プロファイルのルートレベルにある属性、または `user_metadata` 属性内を選択できます。保存場所を指定するには、5 つのパラメータを取るコンストラクタを使用し、任意の `Storage` パラメータを渡します。デフォルトでは、フィールドは `user_metadata` 属性内に保存されます。

利用可能な選択肢:

* PROFILE\_ROOT
* USER\_METADATA (デフォルト)

フィールドをユーザーのプロファイルのルートレベルに保存するには、そのキーが [エンドポイントのドキュメント](https://auth0.com/docs/api/authentication#signup) に記載されているものと一致している必要があります。
