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

# Échanger un code d’autorisation contre un jeton

> Échangez un code d’autorisation contre un jeton d’accès une fois l’utilisateur redirigé vers votre callback.

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`

Lorsque les utilisateurs sont redirigés vers votre callback, vous devez envoyer une requête `POST` au point de terminaison `oauth/token` pour échanger un code d’autorisation contre un jeton d’accès et/ou un jeton d’identité.

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

Pour appeler le point de terminaison `/oauth/token`, vous devez :

* Définir le type de contenu de la requête sur `application/x-www-form-urlencoded`
* Utiliser des chaînes de caractères pour tous les paramètres transmis
* Inclure dans la requête un paramètre supplémentaire pour l’authentification de l’application (par ex. `client_secret`, ou `client_assertion` et `client_assertion_type` pour l’authentification de l’application par JSON Web Token, ou transmettre les en-têtes `client-certificate` et `client-certificate-ca-verified` lors de l’utilisation de Mutual TLS).

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

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

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

<ParamField body="grant_type" type="string" required>
  Indique le flux; utilisez `authorization_code` avec un code d’autorisation valide.
</ParamField>

<ParamField body="code" type="string">
  Le code d’autorisation issu de l’appel initial à `/authorize`.
</ParamField>

<ParamField body="client_id" type="string" required>
  Le `client_id` de votre application. Obligatoire.
</ParamField>

<ParamField body="request_uri" type="string">
  Obligatoire uniquement s’il est défini sur le point de terminaison `GET` `/oauth/par`.
</ParamField>

<ParamField body="code_verifier" type="string">
  Clé aléatoire cryptographiquement sécurisée utilisée pour générer le `code_challenge`. Recommandée si `code_challenge` a été fourni.
</ParamField>

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

<ResponseSchema>
  <ResponseField name="access_token" type="string">
    Le jeton d’accès permettant d’accéder aux ressources protégées.
  </ResponseField>

  <ResponseField name="refresh_token" type="string">
    Jeton 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 vie du jeton d’accès, en secondes.
  </ResponseField>
</ResponseSchema>

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

| Statut | Description                           |
| ------ | ------------------------------------- |
| 200    | Réponse réussie contenant les jetons. |
