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

> Ajout de champs supplémentaires à l’inscription avec Lock.Android

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

**Lock.Android** vous permet de définir des champs supplémentaires que l’utilisateur doit remplir avant de créer un nouveau compte. Ces champs s’afficheront sur un deuxième é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 lui passant ces 4 paramètres obligatoires.

1. Icône : l’`int` qui pointe vers la ressource que vous voulez utiliser comme icône (gardez-la 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é : la `String` qui identifie cette valeur dans le JSON résultant. Elle ne doit pas être répétée! Des clés de champ dupliquées entraîneront la suppression du deuxième champ de la liste.
4. Indice : le `@StringRes` du texte à afficher comme indice 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 dynamiquement des métadonnées supplémentaires 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 le nombre de champs voulu.

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

Passez la liste des champs personnalisés à l’instance Lock lors de sa création à 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 l’Auth0 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 **Envoyer**. 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 dans le profil racine de l’utilisateur, selon l’option de stockage choisie. Vous pouvez accéder à ces propriétés en interrogeant le profil de l’utilisateur à tout moment, même depuis l’Auth0 Dashboard, dans la section Utilisateurs.

<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 à la racine, dans un attribut de profil racine, 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 à la racine du profil de l’utilisateur, leurs clés doivent correspondre à celles indiquées dans la [documentation du point de terminaison](https://auth0.com/docs/api/authentication#signup).
