Passer au contenu principal

Obtention de jetons d’accès à l’aide du flux OAuth en 3 étapes

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, à deux exceptions près :
  • Le point de terminaison GET oauth/authorize est utilisé à la place de 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 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, 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 :

Vue d’ensemble du processus

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

Étapes de la procédure pas à pas

Étape 1 : 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 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 devra être configurée dans les paramètres de votre App pour développeur 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 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 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, 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.   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, 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

Exemple de cas d’utilisation

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. À un moment donné dans votre application, vous voudrez effectuer une redirection vers X afin d’autoriser votre application.
Lorsque vous redirigez vers X avec le jeton de requête, il sera demandé à l’utilisateur d’autoriser votre application.
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.