Étant donné qu’il y a environ 6 000 tweets par seconde(soit plus de 350 000 tweets par minute, 500 millions de tweets par jour, ce qui équivaut à environ 200 milliards de tweets par an), il serait formidable de pouvoir rechercher ceux qui sont liés à un sujet spécifique plutôt qu’une avalanche de tweets qui ne nous intéressent pas. Bonne nouvelle ! Twitter fournit une API de recherche REST qui est idéale pour rechercher des tweets.
Dans cet article, nous verrons comment utiliser l’API de recherche de Twitter avec 4D (passer à l’exemple de la base de données).
jetons d’accès twitter
Pour utiliser l’API de recherche de Twitter, vous avez besoin de jetons d’accès. C’est obligatoire pour envoyer des requêtes à l’API. Afin d’obtenir ces jetons, vous devez créer une application Twitter (une étape gratuite, mais nécessaire ) :
- Créez un compte Twitter (si vous n’en avez pas déjà un).
- Allez sur https://dev.twitter.com/apps/new et connectez-vous.
- Cliquez sur le bouton « Créer une nouvelle application », remplissez le formulaire, acceptez les conditions et cliquez sur le bouton « Créer votre application Twitter ».
- Ensuite, dans l’onglet « Clés et jetons d’accès », copiez votre « clé API » et votre « secret API ».
- Faites défiler la page et cliquez sur « Créer mon jeton d’accès ». Copiez votre « jeton d’accès » et votre « secret du jeton d’accès ». En faisant cela, vous donnez à votre compte Twitter l’accès à l’utilisation de cette API. Ensuite, vous verrez :
Remarque: Ces jetons doivent être considérés comme aussi sensibles que les mots de passe et ne doivent pas être partagés ou distribués à des parties non fiables.
Authentification
Maintenant que nous avons nos jetons, mettons la main à la pâte et écrivons le code d’authentification. Pour cela, nous allons utiliser le processus« Application-only authentication« . Cela permet à une application d’émettre des requêtes authentifiées pour elle-même, et non au nom d’un utilisateur spécifique. Ce processus exige que l’application
- coder sa clé et son secret de consommateur.
- faire une demande au point de terminaison POST oauth2 / token pour échanger ces informations d’identification contre un jeton de porteur.
- utiliser ce jeton porteur pour l’authentification lors de l’accès à l’API REST.
Voici comment procéder avec 4D :
- Concaténer la clé du consommateur et le secret du consommateur encodé en une seule chaîne avec le caractère deux-points » : ».
- Convertissez votre chaîne en BLOB avec la commande TEXT TO BLOB commande.
- Encoder le blob avec la commande BASE64 ENCODE commande.
SET BLOB SIZE(vxBlob;0 )
$consumerKey :="votre clé de consommateur ici"
$consumerSecret :="votre secret de consommateur ici"
TEXT TO BLOB (
$consumerKey+ " : "+$consumerSecret; vxBlob; UTF8 text without length)
BASE64 ENCODE (
vxBlob; $authBasicTxt)
- La valeur résultante doit être échangée contre un jeton porteur en émettant une requête POST oauth2 / token. Cette requête est effectuée avec la commande 4D HTTP Request et le sélecteur HTTP POST method. Elle doit inclure un en-tête Authorization et un en-tête Content-Type, le corps de la demande étant le suivant grant_type=client_credentials.
$authRequestContent:="grant_type=client_credentials"
ARRAY TEXT ($arrHeadAttr;0)
ARRAY TEXT ($arrHeadValue;0)
APPEND TO ARRAY ($arrHeadAttr; "Authorization")
APPEND TO ARRAY ($arrHeadAttr; "Content-Type")
APPEND TO ARRAY ($arrHeadValue; "Basic "+$authBasicTxt)
APPEND TO ARRAY ($arrHeadValue; "application/x-www-form-urlencoded;charset=UTF-8")
$url :="https://api.twitter.com/oauth2/token"
C_TEXT($response)
$result :=HTTP Request(HTTP POST method;$url;$authRequestContent;$response; $arrHeadAttr;$arrHeadValue;*)
- Assurez-vous que votre requête HTTP a abouti, en vérifiant que le code d’état de la réponse est 200. (En savoir plus sur les codes d’état HTTP)
- Analysez la réponse HTTP avec la commande JSON Parse puis stocke la valeur de la propriété access_token dans une variable.
C_OBJECT($jsonResponse)
$jsonResponse:=JSON Parse($response)
$accessToken :=OB Get($jsonResponse; "access_token" ;Is text)
- Ce jeton de porteur sera utilisé pour émettre une requête à notre API de recherche (détails dans la section recherche de tweets ). Copiez-le donc et gardez-le à portée de main.
recherche de tweets
La partie compliquée est terminée. Maintenant que nous avons notre jeton d’accès, nous pouvons l’utiliser pour envoyer une requête à GET search/tweets.json:
$accessToken:="Votre jeton d'accès de la section d'authentification"
ARRAY TEXT ($searchArrHeadAttr;0)
ARRAY TEXT ($searchArrHeadValue;0)
APPEND TO ARRAY ($searchArrHeadAttr; "Authorization")
APPEND TO ARRAY ($searchArrHeadValue; "Bearer "+$accessToken)
$query:="paix"
$url :="https://api.twitter.com/1.1/search/tweets.json?q="+$query
$result :=HTTP Request(HTTP GET method;$url;$searchBody;$searchReponse;$searchArrHeadAttr;$searchArrHeadValue;*)
Dans le débogueur, faites glisser votre variable $searchResponse dans la fenêtre Expression, et vous remarquerez que le résultat contient des mots-clés correspondant à notre requête.
Vous trouverez ci-dessous une réponse JSON simplifiée pour le mot-clé « peace »:
{ "statuses" :[ { "created_at" : "Tue Nov 21 09:51:09 +0000 2017", "id":932909235528183808, "id_str" : "932909235528183808", "text" : "RT @AraiEij : @pintsize73 \nMay your birthday and every day be filled with love, peace and joy", .... "retweeted_status":{ "created_at" : "Sun Nov 19 05:48:49 +0000 2017", "id":932123476025946112, "id_str" : "932123476025946112", "text" :"@pintsize73 Joyeux anniversaire chère Marie ! que ton anniversaire et chaque jour soient remplis d'amour et de paix", "truncated":true, "entities":{ "hashtags" :[], "user_mentions" :[ {.....} ], "urls" :[] }, "metadata":{ "iso_language_code" : "en", "result_type" : "recent" } } } ], "search_metadata":{ ... "query" : "Peace", "refresh_url" : "?since_id=932909235528183808&q=Peace&include_entities=1", ...} } }
Et voici un aperçu de l’interface utilisateur du résultat de la recherche :
Voir plus avec notre exemple
Découvrez notre exemple d’application ! Veuillez noter que cet exemple nécessite que vous suiviez certaines des étapes décrites. En fait, vous devrez obtenir vos jetons d’accès twitter pour exécuter la démo.