> ## 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.

> Ajouter des champs supplémentaires aux inscriptions avec Lock.Android

# Lock.Android : champs personnalisés lors de l’inscription

**Lock.Android** vous permet d’ajouter des champs supplémentaires que l’utilisateur doit remplir avant de créer un nouveau compte. Ces champs s’afficheront sur un second écran, une fois que l’utilisateur aura rempli les champs de base (courriel, nom d’utilisateur, mot de passe).

<div id="create-the-custom-fields">
  ## Créer les champs personnalisés
</div>

Créez un nouvel objet `CustomField` en fournissant ces 4 paramètres obligatoires.

1. Icône : l’`int` qui correspond à la ressource que vous voulez utiliser comme icône (choisissez-en une petite).
2. Type : le `FieldType` à utiliser pour ce champ. Le type définit la disposition du clavier et, parfois, la validation de la saisie.
3. Clé : le `String` qui identifie cette valeur dans le JSON de résultat. Il ne doit pas être répété! Si deux champs ont la même clé, le deuxième sera supprimé de la liste.
4. Indication : le `@StringRes` du texte à afficher comme texte d’indication dans le champ.

De plus, vous pouvez préciser où le champ sera stocké dans le profil de l’utilisateur. Consultez la section [Stockage](#storage) ci-dessous pour en savoir plus.

Vous pouvez aussi créer des champs qui ne seront pas affichés à l’utilisateur, mais qui peuvent servir à inclure des métadonnées supplémentaires de façon dynamique après l’inscription.

```kotlin lines theme={null}
// Champ ordinaire
val nameField = CustomField(R.drawable.ic_name, FieldType.TYPE_NAME, "first_name", R.string.hint_first_name, CustomField.Storage.PROFILE_ROOT)

// Champ masqué
val androidField = HiddenField("android_version", Build.VERSION.SDK_INT.toString(), Storage.USER_METADATA)

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

Répétez les étapes ci-dessus autant de fois que nécessaire pour ajouter tous les champs dont vous avez besoin.

<div id="use-the-custom-fields">
  ## Utiliser les champs personnalisés
</div>

Passez la liste des champs personnalisés à l’instance Lock au moment de la créer, à l’aide de la méthode `withSignUpFields()`.

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

Si vous avez activé l’inscription dans le Dashboard de l’application, les utilisateurs seront invités à remplir les champs restants après avoir rempli les champs de base (email/username, mot de passe) et cliqué sur **Submit**. L’utilisateur doit remplir tous les champs personnalisés avant de pouvoir terminer l’inscription.

Pendant l’inscription, les champs supplémentaires sont ajoutés à l’attribut `user_metadata` ou définis directement à la racine du profil utilisateur, selon l’option stockage choisie. Vous pouvez accéder à ces propriétés en consultant le profil utilisateur à tout moment, même à partir du Dashboard dans la section Users.

<div id="field-types">
  ## Types de champs
</div>

Chaque champ personnalisé ne peut être associé qu’à un seul `FieldType`.

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

<div id="storage">
  ## stockage
</div>

Chaque champ personnalisé ne peut être associé qu’à un seul `Storage`. Vous pouvez choisir de le stocker au niveau racine, dans un attribut racine du profil, ou dans l’attribut `user_metadata`. Pour préciser l’emplacement de stockage, utilisez le constructeur à cinq paramètres et transmettez le paramètre `Storage` de votre choix. Par défaut, les champs sont stockés dans l’attribut `user_metadata`.

Choix possibles :

* PROFILE\_ROOT
* USER\_METADATA (par défaut)

Pour que les champs soient enregistrés au niveau racine du profil de l’utilisateur, leurs clés doivent correspondre à celles indiquées dans la [documentation de l’endpoint](https://auth0.com/docs/api/authentication#signup).
