Passer au contenu principal

Bien démarrer avec les endpoints du flux filtré

Ce guide de démarrage rapide vous aidera à effectuer votre première requête vers le groupe d’endpoints du flux filtré à l’aide d’une requête cURL. cURL est un outil en ligne de commande qui permet d’effectuer des requêtes avec une configuration minimale. Si vous souhaitez consulter des exemples de code dans différents langages, rendez-vous sur notre dépôt GitHub X API v2 sample code.
PrérequisPour suivre ce guide, vous aurez besoin d’un ensemble de clés et jetons pour authentifier votre requête. Vous pouvez générer ces clés et jetons en suivant ces étapes :
  • Inscrivez-vous pour obtenir un compte développeur et obtenez l’approbation.
  • Créez un Project et une App développeur associée dans le developer portal.
  • Accédez à la page « Keys and tokens » de votre App pour générer les informations d’identification requises. Veillez à enregistrer toutes les informations d’identification dans un emplacement sécurisé.

Étapes pour créer une requête de flux filtré avec cURL

Étape 1 : Créer une règle Les règles sont composées d’un ou de plusieurs opérateurs, combinés à l’aide de logique booléenne et de parenthèses afin de définir quels Posts seront transmis à votre stream. Dans ce guide, nous allons filtrer le stream pour trouver des Posts contenant à la fois le mot-clé « cat » et des images. Voici notre règle :
has:images
Deuxième étape : ajouter une balise à votre règle Vous pouvez ajouter plusieurs règles en parallèle à votre stream. Lorsque vous ouvrez votre connexion de streaming, les Posts qui correspondent à l’une de ces règles transiteront par la même connexion de streaming. Pour identifier quel Post correspond à quelle règle, vous pouvez joindre une balise à votre requête de création de règle. Chaque Post correspondant à cette règle inclura alors un champ tag dans la charge utile du Post indiquant la règle correspondante. Pour cette règle, nous allons attribuer la balise suivante :
with images
Étape trois : ajoutez votre règle au stream Cet endpoint requiert d’envoyer, avec cette requête, un corps application/JSON contenant votre règle et son tag. Vous remarquerez également que nous avons inclus la valeur de la règle et le tag dans un objet add, puisque nous cherchons à ajouter cette règle au stream. Ce corps JSON aura la forme suivante :
{
  "add": [
    {
      "value": "cat has:images",
      "tag": "chats avec images"
    }
  ]
}
Maintenant que vous avez entièrement défini ce corps JSON, vous pouvez l’ajouter à une requête cURL, qui ressemblera à ce qui suit. Cette requête n’est pas encore prête, veuillez donc attendre avant de la soumettre jusqu’à une étape ultérieure.
curl -X POST 'https://api.x.com/2/tweets/search/stream/rules' \
-H "Content-type: application/json" \
-H "Authorization: Bearer $APP_ACCESS_TOKEN" -d \
'{
  "add": [
    {"value": "cat has:images", "tag": "chats avec images"}
  ]
}'`
Étape quatre : Authentifiez votre requête Étant donné que les endpoints des règles du flux filtré nécessitent l’authentification OAuth 2.0 App-Only, vous devrez remplacer $APP_ACCESS_TOKEN dans la commande cURL de l’étape trois par l’App Access Token que vous avez généré dans les prérequis.  Étape cinq : Ajoutez votre règle au stream L’étape suivante consiste à exécuter votre requête cURL, ce qui ajoutera la règle à votre stream. Copiez et collez la commande cURL dans votre interface en ligne de commande et appuyez sur « Entrée ».  Si votre requête cURL a abouti, vous recevrez une réponse contenant des data sur votre value, tag et id (sert d’identifiant unique pour votre règle). Cette réponse sera similaire à :
{
  "data": [
    {
      "value": "cat has:images",
      "tag": "chats avec images",
      "id": "1273026480692322304"
    }
  ],
  "meta": {
    "sent": "2020-06-16T22:55:39.356Z",
    "summary": {
      "created": 1,
      "not_created": 0,
      "valid": 1,
      "invalid": 0
    }
  }
}
Vous pouvez confirmer que votre règle a bien été ajoutée en envoyant la requête GET suivante à l’endpoint des règles, en veillant à remplacer à nouveau $APP_ACCESS_TOKEN par votre jeton. Cette requête renverra la liste complète de toutes les règles ajoutées à votre stream.
curl -X GET 'https://api.x.com/2/tweets/search/stream/rules' \
-H "Authorization: Bearer $APP_ACCESS_TOKEN"
Si votre requête cURL a abouti, vous devriez recevoir ce qui suit :
{
	"data": [{
		"id": "1273028376882589696",
		"value": "cat has:images",
		"tag": "chats avec images"
	}],
	"meta": {
		"sent": "2020-06-16T23:14:06.498Z"
	}
}
Étape six : identifiez et indiquez les fields que vous souhaitez récupérer Si vous vous connectez au stream après l’étape cinq, vous recevrez dans votre réponse les champs par défaut de l’Objet Post : id, text et edit_history_tweet_ids. Si vous souhaitez recevoir des champs supplémentaires au‑delà de ceux‑ci, vous devrez spécifier ces champs dans votre requête à l’aide des paramètres fields et/ou expansions. Pour cet exercice, nous allons demander trois ensembles différents de champs provenant d’objets distincts :
  1. Le champ supplémentaire tweet.created_at dans les objets Post principaux.
  2. Les champs par défaut de l’objet utilisateur des auteurs associés pour les Posts retournés : id, name et username
  3. Le champ supplémentaire user.created_at dans les objets utilisateur associés.  
Pour demander ces champs, vous devrez transmettre ce qui suit dans votre requête :
KeyValueReturned fields
tweet.fieldscreated_attweets.created_at
expansionsauthor_idincludes.users.id, includes.users.name, includes.users.username
user.fieldscreated_atincludes.users.created_at
Maintenant que vous le savez, vous pouvez assembler votre URL de requête pour vous connecter au stream, qui ressemblera à ceci :
https://api.x.com/2/tweets/search/stream?tweet.fields=created_at&expansions=author_id&user.fields=created_at
Étape sept : Connectez-vous au stream et vérifiez votre réponse Maintenant que votre règle est en place et que vous avez spécifié les fields que vous souhaitez recevoir, vous pouvez vous connecter au stream, qui diffusera des Objets Post correspondant à la règle que vous avez soumise. Voici à quoi ressemble la commande cURL une fois que vous avez ajouté l’URL de l’étape six à votre requête :
curl -X GET -H "Authorization: Bearer $APP_ACCESS_TOKEN" "https://api.x.com/2/tweets/search/stream?tweet.fields=created_at&expansions=author_id&user.fields=created_at"
Encore une fois, cette requête doit être authentifiée à l’aide d’OAuth 2.0 App-Only. Assurez-vous donc de remplacer $APP_ACCESS_TOKEN par vos identifiants avant de la copier-coller dans votre outil en ligne de commande. Une fois connecté au flux filtré, vous commencerez à recevoir des Posts correspondant à vos règles, au format JSON suivant :
{
  "data": [
    {
      "author_id": "2244994945",
      "created_at": "2022-09-14T19:00:55.000Z",
      "id": "1228393702244134912",
      "edit_history_tweet_ids": ["1228393702244134912"],
      "text": "Qu'est-ce que le développeur a écrit dans sa carte de Saint-Valentin ?\n  \nwhile(true) {\n    I = Love(You);  \n}"
    },
    {
      "author_id": "2244994945",
      "created_at": "2022-09-12T17:09:56.000Z",
      "id": "1227640996038684673",
       "edit_history_tweet_ids": ["1227640996038684673"],
      "text": "Médecins : Chercher des trucs sur Google ne fait pas de vous un médecin\n\nDéveloppeurs : https://t.co/mrju5ypPkb"
    },
    {
      "author_id": "2244994945",
      "created_at": "2022-09-27T20:26:41.000Z",
      "id": "1199786642791452673",
      "edit_history_tweet_ids": ["1199786642791452673"],
      "text": "C#"
    }
  ],
  "includes": {
    "users": [
      {
        "created_at": "2013-12-14T04:35:55.000Z",
        "id": "2244994945",
        "name": "Twitter Dev",
        "username": "TwitterDev"
      }
    ]
  }
}
Si vous souhaitez fermer votre connexion, vous pouvez appuyer sur Ctrl+C dans votre outil en ligne de commande, sur macOS comme sur Windows, pour interrompre la connexion, ou simplement fermer la fenêtre.
I