Passer au contenu principal

Authentification App only et OAuth 2.0 Bearer Token

X offre aux applications la possibilité d’émettre des requêtes authentifiées pour le compte de l’application elle‑même, plutôt que pour le compte d’un utilisateur spécifique. L’implémentation de X est basée sur le flux Client Credentials Grant de la spécification OAuth 2. L’authentification App only n’inclut aucun contexte utilisateur et correspond à une forme d’authentification où une application effectue des requêtes à l’API en son propre nom. Cette méthode s’adresse aux développeurs qui n’ont besoin que d’un accès en lecture aux informations publiques. Vous pouvez effectuer une authentification App only à l’aide des API Keys consommateur de vos Apps, ou en utilisant un App only Access Token (Bearer Token). Cela signifie que les seules requêtes que vous pouvez adresser à la X API ne doivent pas nécessiter d’utilisateur authentifié. Avec l’authentification App only, vous pouvez effectuer des actions telles que :
  • Récupérer des timelines d’utilisateurs
  • Accéder aux abonnements et aux abonnés de n’importe quel compte
  • Accéder aux ressources de List
  • Rechercher des Tweets
Veuillez noter que seuls OAuth 1.0a ou le OAuth 2.0 Authorization Code Flow avec PKCE sont requis pour émettre des requêtes au nom des utilisateurs. La page API reference décrit la méthode d’authentification requise pour utiliser une API. Vous aurez besoin d’une authentification utilisateur, en contexte utilisateur, avec un access token pour effectuer les actions suivantes :
  • Publier des Tweets ou d’autres ressources
  • Rechercher des utilisateurs
  • Utiliser tout endpoint géo
  • Accéder aux Messages privés ou aux identifiants de compte
  • Récupérer les adresses e‑mail d’un utilisateur

Flux d’authentification

Pour utiliser cette méthode, vous devez utiliser un App only Access Token (également appelé Jeton Bearer). Vous pouvez générer un App only Access Token (Jeton Bearer) en transmettant votre consumer key et votre consumer secret via l’endpoint POST oauth2/token. Le flux d’authentification App only se déroule comme suit :
  • L’application encode sa consumer key et son consumer secret dans un ensemble d’identifiants spécifiquement encodés.
  • L’application envoie une requête à l’endpoint POST oauth2/token pour échanger ces identifiants contre un App only Access Token.
  • Lorsqu’elle accède à l’API REST, l’application utilise l’App only Access Token pour s’authentifier.
Comme il n’est pas nécessaire de signer la requête, cette approche est beaucoup plus simple que le modèle OAuth 1.0a standard.

À propos de l’authentification « App only »

Les jetons sont des mots de passe Gardez à l’esprit que la consumer key et la consumer secret, ainsi que l’App only Access Token (Jeton Bearer) lui-même, donnent la possibilité d’effectuer des requêtes au nom d’une application. Ces valeurs doivent être considérées aussi sensibles que des mots de passe et ne doivent pas être partagées ni distribuées à des tiers non fiables. SSL requis Toutes les requêtes (pour obtenir et utiliser les jetons) doivent utiliser des endpoints HTTPS. Suivez les bonnes pratiques détaillées dans Connecting to X API using TLS — les pairs doivent toujours être vérifiés. Aucun contexte utilisateur Lors de l’émission de requêtes avec l’authentification « App only », il n’existe pas de notion d’« utilisateur actuel ». Par conséquent, des endpoints tels que POST statuses/update ne fonctionneront pas avec l’authentification App only. Consultez using OAuth pour plus d’informations sur l’émission de requêtes au nom d’un utilisateur. Limites de taux Les applications disposent de deux types de bassins de limites de taux. Les requêtes effectuées au nom d’utilisateurs avec des access tokens, également appelées contexte utilisateur, s’épuisent dans un contexte de limites de taux différent de celui utilisé par l’authentification App only. En d’autres termes, les requêtes effectuées au nom d’utilisateurs n’entameront pas les limites de taux disponibles via l’authentification App only, et les requêtes effectuées via l’authentification App only n’entameront pas les limites de taux utilisées dans l’authentification basée sur l’utilisateur. En savoir plus sur API Rate Limiting et consultez les limites.

Émission de requêtes en mode App only

Étape 1 : Encoder la consumer key et le consumer secret Les étapes pour encoder la consumer key et le consumer secret d’une application en un ensemble d’identifiants afin d’obtenir un Jeton Bearer sont :
  1. Effectuer un encodage URL de la consumer key et du consumer secret conformément à la RFC 1738. Notez qu’au moment de la rédaction, cela ne modifiera pas réellement la consumer key ni le consumer secret, mais cette étape doit tout de même être effectuée au cas où le format de ces valeurs changerait à l’avenir.
  2. Concaténer la consumer key encodée, un caractère deux-points « : », et le consumer secret encodé en une seule chaîne.
  3. Encoder en Base64 la chaîne issue de l’étape précédente.
Ci-dessous figurent des valeurs d’exemple montrant le résultat de cet algorithme. Notez que le consumer secret utilisé sur cette page est destiné à des tests et ne fonctionnera pas pour des requêtes réelles.
Consumer keyxvz1evFS4wEEPTGEFPHBog
Consumer secretL8qq9PZyRg6ieKGEKhZolGC0vJWLw8iEJ88DRdyOg
Consumer key encodée selon la RFC 1738

(inchangée)
xvz1evFS4wEEPTGEFPHBog
Consumer secret encodé selon la RFC 1738

(inchangé)
L8qq9PZyRg6ieKGEKhZolGC0vJWLw8iEJ88DRdyOg
Identifiants du Jeton Bearerxvz1evFS4wEEPTGEFPHBog:L8qq9PZyRg6ieKGEKhZolGC0vJWLw8iEJ88DRdyOg
Identifiants du Jeton Bearer encodés en Base64:: eHZ6MWV2RlM0d0VFUFRHRUZQSEJvZzpMOHFxOVBaeVJnNmllS0dFS2hab2xHQzB2SldMdzhpRUo4OERSZHlPZw==
Étape 2 : Obtenir un App only Access Token (Jeton Bearer) La valeur calculée à l’étape 1 doit être échangée contre un App only Access Token en émettant une requête vers POST oauth2/token :
  • La requête doit être une requête HTTP POST.
  • La requête doit inclure un en-tête Authorization avec la valeur Basic <base64 encoded value from step 1>.
  • La requête doit inclure un en-tête Content-Type avec la valeur application/x-www-form-urlencoded;charset=UTF-8.
  • Le corps de la requête doit être grant_type=client_credentials.
Exemple de requête (l’en-tête Authorization a été renvoyé à la ligne) :
POST /oauth2/token HTTP/1.1
Host: api.x.com
User-Agent: My X App v1.0.23
Authorization: Basic eHZ6MWV2RlM0d0VFUFRHRUZQSEJvZzpMOHFxOVBaeVJn
                     NmllS0dFS2hab2xHQzB2SldMdzhpRUo4OERSZHlPZw==
Content-Type: application/x-www-form-urlencoded;charset=UTF-8
Content-Length: 29
Accept-Encoding: gzip

grant\_type=client\_credentials
Si la requête est correctement formatée, le serveur répond par une charge utile encodée en JSON : Exemple de réponse :
HTTP/1.1 200 OK
Status: 200 OK
Content-Type: application/json; charset=utf-8
...
Content-Encoding: gzip
Content-Length: 140

{"token\_type":"bearer","access\_token":"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2FAAAAAAAAAAAAAAAAAAAA%3DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"}
Les applications doivent vérifier que la valeur associée à la clé token_type de l’objet renvoyé est bearer. La valeur associée à la clé access_token est l’App only Access Token (Jeton Bearer). Notez qu’un App only Access Token n’est valide que pour une seule application à la fois. Envoyer une autre requête avec les mêmes identifiants à /oauth2/token renverra le même jeton jusqu’à son invalidation. Étape 3 : Authentifier les requêtes API avec l’App only Access Token (Jeton Bearer) L’App only Access Token (Jeton Bearer) peut être utilisé pour envoyer des requêtes vers des endpoints de l’API qui prennent en charge l’authentification App only. Pour utiliser l’App Access Token, construisez une requête HTTPS standard et incluez un en-tête Authorization avec la valeur Bearer <valeur du jeton bearer encodé en base64 depuis l’étape 2>. La signature n’est pas requise. Exemple de requête (l’en-tête Authorization a été renvoyé à la ligne) :
GET /1.1/statuses/user\_timeline.json?count=100&screen\_name=twitterapi HTTP/1.1
Host: api.x.com
User-Agent: My X App v1.0.23
Authorization: Bearer AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2FAAAAAAAAAAAA
                      AAAAAAAA%3DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Accept-Encoding: gzip
Invalidation d’un App only Access Token (Jeton Bearer) Si un App only Access Token est compromis ou doit être invalidé pour quelque raison que ce soit, effectuez un appel à POST oauth2/invalidate_token. Exemple de requête (l’en-tête Authorization a été renvoyé à la ligne) :
POST /oauth2/invalidate_token HTTP/1.1
Authorization: Basic eHZ6MWV2RlM0d0VFUFRHRUZQSEJvZzpMOHFxOVBaeVJn
                     NmllS0dFS2hab2xHQzB2SldMdzhpRUo4OERSZHlPZw==
User-Agent: Mon X App v1.0.23
Host: api.x.com
Accept: */*
Content-Length: 119
Content-Type: application/x-www-form-urlencoded

access_token=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2FAAAAAAAAAAAAAAAAAAAA%3DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Exemple de réponse :
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: 127
...

{"access_token":"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2FAAAAAAAAAAAAAAAAAAAA%3DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"}

Cas d’erreur courants

Cette section décrit quelques erreurs fréquentes lors de la négociation et de l’utilisation des Jetons Bearer. Notez que toutes les réponses d’erreur possibles ne sont pas couvertes ici — soyez attentif aux codes et réponses d’erreur non pris en charge. Requêtes invalides pour obtenir ou révoquer un App only Access Token Tentatives de :
  • Obtenir un App only Access Token (Jeton Bearer) avec une requête invalide (par exemple, en omettant grant_type=client_credentials).
  • Obtenir ou révoquer un App only Access Token (Jeton Bearer) avec des informations d’identification d’App incorrectes ou expirées.
  • Invalider un App only Access Token (Jeton Bearer) incorrect ou déjà révoqué.
  • Obtenir un App only Access Token (Jeton Bearer) trop fréquemment sur une courte période.
Entraîneront :
HTTP/1.1 403 Forbidden
Content-Length: 105
Content-Type: application/json; charset=utf-8
...

{"errors":\[{"code":99,"label":"authenticity\_token\_error","message":"Impossible de vérifier vos identifiants"}\]}

La requête API contient un App only Access Token (Jeton Bearer) invalide

L’utilisation d’un Access Token incorrect ou révoqué pour effectuer des requêtes à l’API entraînera :
HTTP/1.1 401 Unauthorized
Content-Type: application/json; charset=utf-8
Content-Length: 61
...

{"errors":\[{"message":"Invalid or expired token","code":89}\]}

App only Access Token (Jeton Bearer) utilisé sur un endpoint qui ne prend pas en charge l’authentification App only

Effectuer une requête vers un endpoint nécessitant un contexte utilisateur (par exemple statuses/home_timeline) avec un App only Access Token (Jeton Bearer) entraînera :
HTTP/1.1 403 Forbidden
Content-Type: application/json; charset=utf-8
Content-Length: 91
...

{"errors":\[{"message":"Vos identifiants ne permettent pas d'accéder à cette ressource","code":220}\]}
I