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

# LoginId

<Frame>
  <img style={{maxHeight:"400px"}} src="https://mintcdn.com/generaltranslationinc/-mZh6I5893vkj3e3/docs/images/cdy7uua7fh8z/1nvMFmxC5ODCW2q7cByHv8/657d87ba1c2eb11316e6b0ef93737c99/LoginIDACUL.png?fit=max&auto=format&n=-mZh6I5893vkj3e3&q=85&s=ea40614ef7f544b2a4893f8b71534611" alt="" width="409" height="562" data-path="docs/images/cdy7uua7fh8z/1nvMFmxC5ODCW2q7cByHv8/657d87ba1c2eb11316e6b0ef93737c99/LoginIDACUL.png" />
</Frame>

```ts Example theme={null}
import LoginId from "@auth0/auth0-acul-js/login";
const loginIdManager = new LoginId();
loginIdManager.getLoginIdentifiers();
```

<div id="constructors">
  ## Constructeurs
</div>

<ParamField body="LoginId" type="Constructor">
  Crée une instance de la classe LoginIdManager.
</ParamField>

<div id="properties">
  ## Propriétés
</div>

<ParamField body="branding" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/BrandingMembers">BrandingMembers</a></span>} />

<ParamField body="client" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/ClientMembers">ClientMembers</a></span>} />

<ParamField body="organization" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/OrganizationMembers">OrganizationMembers</a></span>} />

<ParamField body="prompt" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/PromptMembers">PromptMembers</a></span>} />

<ParamField body="screen" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/ScreenMembersOnLoginId">ScreenMembersOnLoginId</a></span>} />

<ParamField body="tenant" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/TenantMembers">TenantMembers</a></span>} />

<ParamField body="transaction" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/TransactionMembersOnLoginId">TransactionMembersOnLoginId</a></span>} />

<ParamField body="untrustedData" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/UntrustedDataMembers">UntrustedDataMembers</a></span>} />

<ParamField body="user" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/UserMembers">UserMembers</a></span>} />

<ParamField body="screenIdentifier" type="string" />

<div id="methods">
  ## Méthodes
</div>

<ParamField body="federatedLogin" type="Promise<void>">
  ```ts Example theme={null}
  import LoginId from "@auth0/auth0-acul-js/login-id";
  const loginIdManager = new LoginId();

  // Vérifiez si alternateConnections est disponible et contient au moins un élément
  if (!loginIdManager.transaction.alternateConnections) {
    console.error('No alternate connections available.');
  }

  // Sélectionnez la première connexion disponible (les utilisateurs peuvent sélectionner n'importe quelle connexion disponible)
  const selectedConnection = alternateConnections[0];

  // Consignez la connexion choisie à des fins de débogage ou d'information
  console.log(`Selected connection: ${selectedConnection.name}`);

  // Procédez à la connexion fédérée en utilisant la connexion sélectionnée
  loginIdManager.federatedLogin({
    connection: selectedConnection.name,
  });
  ```

  <Expandable title="Paramètres">
    <ParamField body="payload" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/FederatedLoginOptions">FederatedLoginOptions</a></span>}>
      **Propriétés**

      <ParamField body="connection" type="string" />
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="getErrors" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/Error">Error</a>[]</span>}>
  Renvoie le tableau des erreurs de transaction à partir du contexte, ou un tableau vide s'il n'en existe aucune.
</ParamField>

<ParamField body="getLoginIdentifiers" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/type-aliases/ScreenIdentifierType">ScreenIdentifierType</a>[]</span>}>
  **`Fonction utilitaire`**

  Renvoie les types d'identifiants actifs pour l'écran de connexion.

  ```typescript Example theme={null}
  import LoginId from "@auth0/auth0-acul-js/login";
  const loginIdManager = new LoginId();
  loginIdManager.getLoginIdentifiers();
  ```
</ParamField>

<ParamField body="login" type="Promise<void>">
  ```ts Example theme={null}
  import LoginId from "@auth0/auth0-acul-js/login-id";

  const loginIdManager = new LoginId();

  loginIdManager.login({
    username: <usernameFieldValue>
  });
  ```

  <Expandable title="Paramètres">
    <ParamField body="payload" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/LoginOptions">LoginOptions</a></span>}>
      **Propriétés**

      <ParamField body="captcha?" type="string" />

      <ParamField body="username" type="string" />
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="passkeyLogin" type="Promise<void>">
  ```ts Example theme={null}
  import LoginId from "@auth0/auth0-acul-js/login-id";
  const loginIdManager = new LoginId();

  // Cette méthode associe en interne la configuration de passkey disponible pour les utilisateurs, telle que fournie par le serveur Auth0
  loginIdManager.passkeyLogin();
  ```

  <Expandable title="Paramètres">
    <ParamField body="payload?" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/CustomOptions">CustomOptions</a></span>} />
  </Expandable>
</ParamField>

<ParamField body="pickCountryCode" type="Promise<void>">
  ```ts Example theme={null}
  import LoginId from "@auth0/auth0-acul-js/login-id";
  const loginIdManager = new LoginId();

  loginIdManager.pickCountryCode();
  ```

  <Expandable title="Paramètres">
    <ParamField body="payload?" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/CustomOptions">CustomOptions</a></span>} />
  </Expandable>
</ParamField>

<div id="passkeys">
  ### Passkeys
</div>

<ParamField body="registerPasskeyAutofill" type="Promise<void>">
  **`Utility Feature`**

  Enregistre l’interface utilisateur conditionnelle du navigateur pour les passkeys (expérience de saisie semi-automatique).

  Cette méthode initialise une requête passive d’identifiants WebAuthn à l’aide de
  `navigator.credentials.get()` avec `mediation: "conditional"`. Lorsque cette fonctionnalité est prise en charge,
  elle permet au navigateur d’afficher les passkeys enregistrés directement dans la liste de
  saisie semi-automatique du champ de nom d’utilisateur.

  Appelez cette méthode **une seule fois** lorsque l’écran de connexion est initialisé (par exemple, au chargement de la page).
  Après l’enregistrement, le fait de placer le curseur dans le champ de nom d’utilisateur affichera automatiquement
  les passkeys correspondants comme suggestions. La sélection d’un passkey finalise l’authentification
  sans nécessiter d’interaction supplémentaire de la part de l’utilisateur.
</ParamField>

<div id="input-configuration">
  ### Configuration de l’élément `input`
</div>

Si un `inputId` est fourni, la Trousse de développement logiciel (SDK) va :

* Valider que l’élément existe et qu’il s’agit d’un `<input>`.
* Remplacer son attribut `autocomplete` par `"webauthn username"`.

Cela garantit une compatibilité complète avec l’API Conditional Mediation.

Si vous ne fournissez pas de `inputId`, vous êtes responsable de configurer
l’élément d’entrée manuellement avec les attributs appropriés :

```html theme={null}
<input id="username" autocomplete="webauthn username" />
```

***

<div id="gotchas">
  ### Pièges à éviter
</div>

* L’attribut `autocomplete` **doit contenir exactement** `"webauthn username"`.
  L’ajout de jetons non liés comme `"email"` ou `"text"` empêchera les navigateurs
  d’afficher la liste déroulante de passkeys.
* Le fait d’écraser l’attribut est intentionnel et nécessaire pour assurer un comportement cohérent
  d’un navigateur à l’autre. Ne comptez pas sur la fusion ou l’extension des valeurs `autocomplete` existantes.
* Si la médiation conditionnelle n’est pas prise en charge par le navigateur, le SDK se contentera de ne rien faire (no-op) en toute sécurité.

<div id="parameters">
  #### Paramètres
</div>

<ParamField body="inputId?" type="string">
  `string`

  ID facultatif de l’élément `<input>` pour le nom d’utilisateur (sans `#`). Exemple : `"username"`.
  S’il est omis, le développeur doit veiller manuellement à ce que les attributs `autocomplete` soient corrects.
</ParamField>

```ts Example theme={null}
import LoginId from '@auth0/auth0-acul-js/login-id';

// Exemple : initialisation de la saisie automatique de clé d'accès dans un bloc de configuration asynchrone.
async function initializeLogin() {
  const loginId = new LoginId();
  // Assurez-vous que l'élément input HTML associé existe :
  // <input id="username" autocomplete="webauthn username" />
  // Enregistrement conditionnel de l'IU.
  await loginId.registerPasskeyAutofill('username');
}

initializeLogin().catch(console.error);
```

<div id="remarks">
  #### Remarques
</div>

Cette méthode délègue à l’utilitaire interne `registerPasskeyAutofill()`,
qui renvoie en arrière-plan un `AbortController` pour gérer la durée de vie de la requête. Elle ne doit
être appelée qu’une seule fois par cycle de vie de la page.
