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

# Obtention de jetons d’accès à l’aide du flux OAuth à 3 volets (3-legged OAuth)

export const Button = ({href, children}) => {
  return <div className="not-prose group">
    <a href={href}>
      <button className="flex items-center space-x-2.5 py-1 px-4 bg-primary-dark dark:bg-white text-white dark:text-gray-950 rounded-full group-hover:opacity-[0.9] font-medium">
        <span>
          {children}
        </span>
        <svg width="3" height="24" viewBox="0 -9 3 24" class="h-6 rotate-0 overflow-visible"><path d="M0 0L3 3L0 6" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"></path></svg>
      </button>
    </a>
  </div>;
};

<div id="obtaining-access-tokens-using-3-legged-oauth-flow">
  ### Obtention de jetons d’accès à l’aide du flux OAuth en 3 étapes
</div>

Pour effectuer des actions au nom d’un autre utilisateur, vous devez obtenir ses jetons d’accès. Les jetons d’accès indiquent le compte X pour lequel la requête est effectuée, et pour que vous puissiez les obtenir, l’utilisateur doit d’abord vous accorder l’accès. Ces jetons n’expirent pas mais peuvent être révoqués par l’utilisateur à tout moment.

X vous permet d’obtenir des jetons d’accès utilisateur via le flux OAuth en 3 étapes, qui permet à votre application d’obtenir un **jeton d’accès** et un secret associé au jeton d’accès en redirigeant un utilisateur vers X et en lui faisant autoriser votre application. Ce flux est presque identique à celui décrit dans [implementing Log in with X](/fr/resources/fundamentals/authentication/guides/log-in-with-x), à deux exceptions près :

* Le point de terminaison [GET oauth/authorize](/fr/resources/fundamentals/authentication/api-reference#get-oauth-authorize) est utilisé à la place de [GET oauth/authenticate](/fr/resources/fundamentals/authentication/api-reference#get-oauth-authenticate).
* L’utilisateur sera **toujours** invité à autoriser l’accès à votre application, même si l’accès a déjà été accordé.
   

Avant de commencer, vous devez vérifier les autorisations de votre [application](/fr/resources/fundamentals/developer-apps) et connaître les consumer keys et l’URL de rappel (callback URL). Si vous n’avez pas d’URL de rappel ou d’interface utilisateur accessible publiquement, envisagez d’utiliser l’[autorisation basée sur un code PIN](/fr/resources/fundamentals/authentication/oauth-1-0a/pin-based-oauth), destinée aux applications qui ne peuvent pas accéder à un navigateur web ou l’intégrer pour rediriger l’utilisateur après l’autorisation. 

Les états possibles pour l’interaction de connexion en 3 étapes sont illustrés dans le diagramme de flux suivant :

![](https://cdn.cms-twdigitalassets.com/content/dam/developer-twitter/docs/obtaining-access-tokens.png.twimg.1920.png)

<div id="overview-of-the-process">
  #### Vue d’ensemble du processus
</div>

De manière générale, le processus OAuth « 3-legged » va :

1. Créer une requête pour qu’une application consommatrice obtienne un jeton de requête.
2. Faire authentifier l’utilisateur, puis envoyer à l’application consommatrice un jeton de requête.
3. Convertir le jeton de requête en un jeton d’accès utilisateur utilisable.

**Précision terminologique**

Dans le guide ci-dessous, vous verrez différents termes faisant référence à la même chose.

**Identifiants client :**

* App Key === API Key === Consumer API Key === Consumer Key === Customer Key === `oauth_consumer_key`
* App Key Secret === API Secret Key === Consumer Secret === Consumer Key === Customer Key === `oauth_consumer_secret`
* Callback URL === `oauth_callback`
   

**Identifiants temporaires :**

* Request Token === `oauth_token`
* Request Token Secret === `oauth_token_secret`
* oauth\_verifier
   

**Identifiants du jeton :**

* Access token === Token === `oauth_token` résultant
* Access token secret === Token Secret === `oauth_token_secret` résultant

<div id="walkthrough-steps">
  #### Étapes de la procédure pas à pas
</div>

**Étape 1 : [POST oauth/request\_token](/fr/resources/fundamentals/authentication/api-reference#post-oauth-request-token)**

Créez une requête pour permettre à une application cliente d’obtenir un jeton de requête.

Le seul paramètre spécifique dans cette requête est `oauth_callback`, qui doit être une version [encodée en URL](/fr/resources/fundamentals/authentication/oauth-1-0a/percent-encoding-parameters) de l’URL vers laquelle vous souhaitez que votre utilisateur soit redirigé lorsqu’il termine l’étape 2. Les autres paramètres sont ajoutés par le processus de signature OAuth.

Veuillez noter : toute URL de rappel que vous utilisez avec le point de terminaison [POST oauth/request\_token](/fr/resources/fundamentals/authentication/api-reference#post-oauth-request-token) devra être configurée dans les paramètres de votre [App pour développeur](/fr/resources/fundamentals/developer-apps) sur la page de détails de l’App dans la Console de développement.
 

**La requête inclut :**

`oauth_callback="https%3A%2F%2FyourCallbackUrl.com"`

`oauth_consumer_key="cChZNFj6T5R0TigYB9yd1w" `

Votre app doit examiner le statut HTTP de la réponse. Toute valeur différente de 200 indique un échec. Le corps de la réponse contient les paramètres `oauth_token`, `oauth_token_secret` et `oauth_callback_confirmed`. Votre app doit vérifier que `oauth_callback_confirmed` est vrai et stocker les deux autres valeurs pour les étapes suivantes.
 

**La réponse inclut :**

`oauth_token=NPcudxy0yU5T3tBzho7iCotZ3cnetKwcTIRlX0iwRl0`

`oauth_token_secret=veNRnAWe6inFuo8o2u8SLLZLjolYDmDP7SzL0YfYI`

`oauth_callback_confirmed=true`

**Étape 2 : [GET oauth/authorize](/fr/resources/fundamentals/authentication/api-reference#get-oauth-authorize)**

Demandez à l’utilisateur de s’authentifier et d’envoyer à l’application cliente un jeton de requête.
 

**Exemple d’URL vers laquelle rediriger l’utilisateur :**

`https://api.x.com/oauth/authorize?oauth_token=NPcudxy0yU5T3tBzho7iCotZ3cnetKwcTIRlX0iwRl0`

Après une authentification réussie, votre `callback_url` recevra une requête contenant les paramètres `oauth_token` et `oauth_verifier`. Votre application doit vérifier que le jeton correspond au jeton de requête reçu à l’étape 1.
 

**Requête issue de la redirection du client :**

`https://yourCallbackUrl.com?oauth_token=NPcudxy0yU5T3tBzho7iCotZ3cnetKwcTIRlX0iwRl0&oauth_verifier=uw7NjWHT6OJ1MpJOXsHfNxoAhPKpgI8BlYDhxEjIBY`

**Étape 3 : [POST oauth/access\_token](/fr/resources/fundamentals/authentication/api-reference#post-oauth-access-token)**

Convertissez le jeton de requête en jeton d’accès utilisable.

Pour transformer le jeton de requête en jeton d’accès utilisable, votre application doit envoyer une requête au point de terminaison [POST oauth/access\_token](/fr/resources/fundamentals/authentication/api-reference#post-oauth-access-token), contenant la valeur `oauth_verifier` obtenue à l’étape 2. Le jeton de requête est également transmis dans la partie `oauth_token` de l’en-tête, mais il aura été ajouté par le processus de signature.
 

**La requête inclut :**

`POST /oauth/access_token`

`oauth_consumer_key=cChZNFj6T5R0TigYB9yd1w`

`oauth_token=NPcudxy0yU5T3tBzho7iCotZ3cnetKwcTIRlX0iwRl0`

`oauth_verifier=uw7NjWHT6OJ1MpJOXsHfNxoAhPKpgI8BlYDhxEjIBY`

Une réponse réussie contient les paramètres `oauth_token`, `oauth_token_secret`. Le jeton et le secret du jeton doivent être stockés et utilisés pour les futures requêtes authentifiées vers la X API. Pour déterminer l’identité de l’utilisateur, utilisez [GET account/verify\_credentials](/fr/resources/fundamentals/authentication/api-reference).
 

**La réponse inclut :**

`oauth_token=7588892-kagSNqWge8gB1WwE3plnFsJHAZVfxWD7Vb57p0b4`

`oauth_token_secret=PbKfYqSryyeKDWz4ebtY3o5ogNLG11WJuZBc9fQrQo`

**Utilisation de ces identifiants pour les requêtes nécessitant OAuth 1.0a (application-utilisateur)**

Maintenant que vous avez obtenu les jetons d’accès utilisateur, vous pouvez les utiliser pour accéder à certaines API, comme [POST statuses/update](/fr/x-api/posts/manage-tweets/introduction), afin de créer des Tweets pour le compte des utilisateurs.
 

**La requête comprend :**

`POST statuses/update.json`

`oauth_consumer_key=cChZNFj6T5R0TigYB9yd1w`

`oauth_token=7588892-kagSNqWge8gB1WwE3plnFsJHAZVfxWD7Vb57p0b4`

<div id="sample-use-case">
  #### Exemple de cas d’utilisation
</div>

Le flux standard est basé sur le Web et utilise le flux d’autorisation OAuth en 3 étapes. Les captures d’écran présentées ici font partie d’un exemple dont vous pouvez consulter le code source à l’adresse [https://github.com/xdevplatform/twauth-web](https://github.com/xdevplatform/twauth-web).

À un moment donné dans votre application, vous voudrez effectuer une redirection vers X afin d’autoriser votre application.

<Frame>
  <img src="https://mintcdn.com/generaltranslation/p-tsc5qa00w8y5M4/images/twauth-web-2.png?fit=max&auto=format&n=p-tsc5qa00w8y5M4&q=85&s=b681c5f9dda24dc90e54ec838717c142" alt="" width="1858" height="1578" data-path="images/twauth-web-2.png" />
</Frame>

Lorsque vous redirigez vers X avec le jeton de requête, il sera demandé à l’utilisateur d’autoriser votre application.

<Frame>
  <img src="https://mintcdn.com/generaltranslation/p-tsc5qa00w8y5M4/images/twauth-web-3.png?fit=max&auto=format&n=p-tsc5qa00w8y5M4&q=85&s=b77b11d9a23b80535de949b50547c49e" alt="" width="1858" height="1578" data-path="images/twauth-web-3.png" />
</Frame>

Après avoir autorisé votre application, l’utilisateur sera redirigé vers l’URL de rappel fournie lorsque vous avez généré le jeton de requête. Vous utiliserez cette URL pour obtenir le jeton d’accès permanent de cet utilisateur et le stocker localement.

<Frame>
  <img src="https://mintcdn.com/generaltranslation/p-tsc5qa00w8y5M4/images/twauth-web-4.png?fit=max&auto=format&n=p-tsc5qa00w8y5M4&q=85&s=b0dee4e65eaafa884b7e7c4200c1a2ee" alt="" width="1858" height="1578" data-path="images/twauth-web-4.png" />
</Frame>
