> ## Documentation Index
> Fetch the complete documentation index at: https://docs-dev-fix-docs-5546-update-db-search.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

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

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

**Lock.Android** vous permet de spécifier des champs supplémentaires que l’utilisateur doit remplir avant de créer un nouveau compte. Les champs supplémentaires seront affichés sur un deuxième écran après que l’utilisateur a complété les champs de base (courriel, nom d’utilisateur, mot de passe).

## Créer les champs personnalisés

Créez un nouvel objet `CustomField` en définissant les 4 paramètres suivants obligatoires.

1. Icône : `int` qui pointe vers la ressource que vous souhaitez utiliser comme icône (gardez-le en petite taille).
2. Type : `FieldType` à utiliser dans ce champ. Le type définit la disposition du clavier et parfois la validation des saisies.
3. Clé : La `chaîne` qui détermine cette valeur dans le JSON du résultat. Elle ne doit pas être répétée : des clés de champ répétées entraîneront la suppression du deuxième champ de la liste.
4. Indice : `@StringRes` du texte à afficher comme indice dans le champ.

In addition, you can specify where the field is going to be stored on the user’s profile. See the [Storage](#storage) section below for details.

Vous pouvez également créer des champs qui ne seront pas présentés à l’utilisateur, mais qui peuvent être utilisés pour inclure des métadonnées supplémentaires de manière dynamique après l’inscription.

```kotlin lines theme={null}
// Regular field
val nameField = CustomField(R.drawable.ic_name, FieldType.TYPE_NAME, "first_name", R.string.hint_first_name, CustomField.Storage.PROFILE_ROOT)

// Hidden field
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 les champs dont vous avez besoin.

## Utiliser les champs personnalisés

Passez la liste des champs personnalisés à l’instance Lock lors de sa création, en utilisant 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 complété les champs de base (courriel/nom d’utilisateur, mot de passe) et avoir cliqué sur **Soumettre**. L’utilisateur doit remplir tous les champs personnalisés pour pouvoir terminer l’inscription.

Lors de l’inscription, les champs supplémentaires sont attachés à l’attribut `user_metadata` ou sont directement définis dans le profil utilisateur principal, selon l’option de stockage choisie. Vous pouvez accéder à ces propriétés en interrogeant le profil utilisateur à tout moment, même à partir de Dashboard dans la section Utilisateur.

## Field Types

Chaque champ personnalisé ne peut avoir qu’un seul `FieldType` associé.

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

## Storage

Chaque champ personnalisé ne peut avoir qu’un seul `Storage` associé. Vous pouvez choisir de le stocker au niveau basique dans un attribut de profil de base ou à l’intérieur de l’attribut `user_metadata`. Pour spécifier l’emplacement de stockage, utilisez le constructeur à cinq paramètres et passez le paramètre `Storage` de votre choix. Par défaut, les champs seront stockés à l’intérieur de l’attribut `user_metadata`.

Options disponibles :

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

Pour que les champs soient enregistrés au niveau de base du profil de l’utilisateur, leurs clés doivent correspondre à celles énumérées dans la [Documentation des points de terminaison](/docs/fr-ca/api/authentication#signup).
