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

# Obtenir un jeton

> Échangez un code d’autorisation contre un jeton dans la dernière étape du flux de code d’autorisation avec PKCE.

export const ResponseSchema = ({statusCode, type = "{}", children}) => {
  const [open, setOpen] = useState(false);
  return <div className="border border-gray-100 dark:border-gray-800 rounded-lg mb-3 overflow-hidden">
      <div className={`flex items-center gap-2.5 px-4 py-2.5 cursor-pointer select-none ${open ? "bg-gray-50 dark:bg-gray-800" : ""}`} onClick={() => setOpen(!open)}>
        {statusCode && <span className="border border-gray-300 dark:border-gray-600 text-gray-700 dark:text-gray-300 font-mono text-xs px-1.5 py-0.5 rounded">
            {statusCode.startsWith("default") ? "default" : statusCode}
          </span>}
        <span className="text-gray-500 dark:text-gray-400 text-sm font-mono">
          {type}
        </span>
        <span className="text-gray-400 dark:text-gray-500 text-sm italic">
          application/json
        </span>
        <svg className={`ml-auto opacity-50 transition-transform duration-200 ${open ? "rotate-180" : ""}`} width="16" height="16" viewBox="0 0 16 16" fill="none">
          <path d="M4 6l4 4 4-4" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" />
        </svg>
      </div>
      {open && <div className="px-4 pt-1 pb-3 border-t border-gray-100 dark:border-gray-800">
          {children}
        </div>}
    </div>;
};

<div id="endpoint">
  ## Point de terminaison
</div>

`POST /oauth/token`

Il s’agit du flux utilisé par les applications mobiles pour accéder à une API. Utilisez ce point de terminaison pour échanger un code d’autorisation contre un jeton.

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

* Afin d’améliorer la compatibilité des applications, Auth0 renverra désormais les informations de profil dans un format de claim structuré, tel que défini par la spécification OIDC. Cela signifie que, pour ajouter des claims personnalisées aux ID tokens ou aux jetons d’accès, elles doivent utiliser un format avec espace de noms afin d’éviter d’éventuelles collisions avec les claims OIDC standard.
* Incluez `offline_access` dans le paramètre de requête `scope` pour obtenir un Jeton d’actualisation à partir de POST /oauth/token. Assurez-vous que le champ Allow Offline Access est activé dans les paramètres de l’API.
* La valeur `redirect_uri` doit être spécifiée comme URL de rappel valide dans les paramètres de votre application.
* L’authentification silencieuse vous permet d’exécuter un flux d’authentification dans lequel Auth0 répond uniquement par des redirections, jamais avec une page de connexion. Lorsqu’un Jeton d’accès a expiré, l’authentification silencieuse peut être utilisée pour en obtenir un nouveau sans interaction de l’utilisateur, à condition que la session d’authentification unique (SSO) de l’utilisateur n’ait pas expiré.

<div id="learn-more">
  ### En savoir plus
</div>

* [Flux de code d’autorisation avec PKCE (Proof Key for Code Exchange)](https://auth0.com/docs/get-started/authentication-and-authorization-flow/authorization-code-flow-with-pkce)
* [Appeler une API à l’aide du flux de code d’autorisation avec PKCE](https://auth0.com/docs/get-started/authentication-and-authorization-flow/authorization-code-flow-with-pkce/call-your-api-using-the-authorization-code-flow-with-pkce)
* [Authentification silencieuse](https://auth0.com/docs/authenticate/login/configure-silent-authentication)

<div id="headers">
  ## En-têtes
</div>

<ParamField header="DPoP" type="string">
  Une preuve DPoP pour la requête. Ce champ est facultatif et n’est requis que si votre application utilise DPoP (Demonstrating Proof-of-Possession).
</ParamField>

<div id="body-parameters">
  ## Paramètres du corps
</div>

<ParamField body="grant_type" type="string" required>
  Indique le flux utilisé. Pour le code d’autorisation (PKCE), utilisez `authorization_code`.

  Valeurs autorisées : `authorization_code`
</ParamField>

<ParamField body="client_id" type="string" required>
  L’ID client de votre application.
</ParamField>

<ParamField body="code" type="string" required>
  Le code d’autorisation reçu lors de l’appel initial à `/authorize`.
</ParamField>

<ParamField body="code_verifier" type="string" required>
  Clé aléatoire cryptographiquement sûre utilisée pour générer le `code_challenge` transmis à `/authorize`.
</ParamField>

<ParamField body="redirect_uri" type="string">
  Ce paramètre est requis uniquement s’il a été défini au point de terminaison `GET` `/authorize`.
</ParamField>

<div id="response-schema">
  ## Schéma de réponse
</div>

<ResponseSchema statusCode="200">
  <ResponseField name="access_token" type="string">
    Le jeton d’accès.
  </ResponseField>

  <ResponseField name="refresh_token" type="string">
    Le jeton d’actualisation utilisé pour obtenir de nouveaux jetons d’accès.
  </ResponseField>

  <ResponseField name="id_token" type="string">
    Le jeton d’identité.
  </ResponseField>

  <ResponseField name="token_type" type="string">
    Le type de jeton. Généralement `Bearer`.
  </ResponseField>

  <ResponseField name="expires_in" type="integer">
    La durée de validité du jeton d’accès, en secondes.
  </ResponseField>
</ResponseSchema>

<ResponseSchema statusCode="erreur par défaut">
  <ResponseField name="error" type="string">
    Code d’erreur.
  </ResponseField>

  <ResponseField name="error_description" type="string">
    Description de l’erreur.
  </ResponseField>
</ResponseSchema>

<div id="response-messages">
  ## Messages de réponse
</div>

| Statut  | Description              |
| ------- | ------------------------ |
| 200     | Échange de jeton réussi. |
| default | Erreur inattendue        |
