Dato che ci sono circa 6.000 tweet al secondo(cioè oltre 350.000 tweet al minuto, 500 milioni di tweet al giorno, pari a circa 200 miliardi di tweet all’anno), sarebbe bello poter cercare quelli relativi a un argomento specifico piuttosto che una valanga di tweet che non ci interessano. Buone notizie! Twitter fornisce un’ API di ricerca REST che è ottima per la ricerca dei tweet.
In questo post parleremo di come utilizzare l’API di ricerca di Twitter con 4D (salto all’esempio del database).
token di accesso a twitter
Per utilizzare l’API di ricerca di Twitter, è necessario disporre di token di accesso. Questo è obbligatorio per inviare richieste all’API. Per ottenere questi token, è necessario creare un’applicazione Twitter (un passaggio gratuito, ma necessario ):
- Create un account Twitter (se non ne avete già uno).
- Andate su https://dev.twitter.com/apps/new e accedete.
- Fare clic sul pulsante “Crea nuova applicazione”, compilare il modulo, accettare i termini e fare clic sul pulsante “Crea la tua applicazione Twitter”.
- Quindi, nella scheda “Chiavi e token di accesso”, copiate la “chiave API” e il “segreto API”.
- Scorrete verso il basso e fate clic su “Crea il mio token di accesso”. Copiare il “token di accesso” e il “segreto del token di accesso”. In questo modo, date al vostro account Twitter l’accesso all’utilizzo di questa API. Poi vedrete:
Nota: questi token devono essere considerati sensibili come le password e non devono essere condivisi o distribuiti a persone non fidate.
Autenticazione
Ora che abbiamo i nostri token, sporchiamoci le mani e scriviamo il codice di autenticazione. Per questo, useremo il processo di“Autenticazione solo per applicazioni“. Questo consente a un’applicazione di inviare richieste autenticate per se stessa e non per conto di un utente specifico. Questo processo richiede che un’applicazione
- codifichi la propria chiave del consumatore e il proprio segreto.
- faccia una richiesta all’endpoint POST oauth2 / token per scambiare queste credenziali con un token bearer.
- utilizzare questo token per l’autenticazione quando si accede all’API REST.
Ecco come si fa con 4D:
- Concatenare la chiave del consumatore e il segreto del consumatore codificato in un’unica stringa con i due punti “:”.
- Convertire la stringa in un BLOB con il comando TEXT TO BLOB con il comando
- Codificare il blob con il comando BASE64 ENCODE con il comando
SET BLOB SIZE(vxBlob;0)
$consumerKey :="la chiave del consumatore qui"
$consumerSecret :="il segreto del consumatore qui"
TEXT TO BLOB (
$consumerKey+": "+$consumerSecret; vxBlob; UTF8 text without length)
BASE64 ENCODE (
vxBlob; $authBasicTxt)
- Il valore risultante deve essere scambiato con un token del portatore, inviando una richiesta a POST oauth2 / token. Questa richiesta viene effettuata con il comando 4D HTTP Request e il selettore HTTP POST method. Deve includere un’intestazione Authorization e una Content-Type, con il corpo della richiesta come 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;*)
- Assicurarsi che la richiesta HTTP sia andata a buon fine, verificando che il codice di stato della risposta sia 200. (Per saperne di più sui codici di stato HTTP). (Ulteriori informazioni sui codici di stato HTTP)
- Analizzare la risposta HTTP con il comando JSON Parse quindi memorizzare il valore della proprietà access_token in una variabile.
C_OBJECT($jsonResponse)
$jsonResponse:=JSON Parse($response)
$accessToken :=OB Get($jsonResponse; "access_token";Is text)
- Questo token del portatore sarà usato per inviare una richiesta alla nostra API di ricerca (dettagli nella sezione Ricerca di tweet ). Quindi copiatelo e tenetelo a portata di mano.
ricerca di tweet
La parte complicata è finita. Ora che abbiamo il nostro token di accesso, possiamo usarlo per inviare una richiesta a GET search/tweets.json:
$accessToken:="Il vostro token di accesso dalla sezione di autenticazione"
ARRAY TEXT ($searchArrHeadAttr;0)
ARRAY TEXT ($searchArrHeadValue;0)
APPEND TO ARRAY ($searchArrHeadAttr; "Authorization")
APPEND TO ARRAY ($searchArrHeadValue; "Bearer "+$accessToken)
$query:="pace"
$url :="https://api.twitter.com/1.1/search/tweets.json?q="+$query
$result :=HTTP Request(HTTP GET method;$url;$searchBody;$searchReponse;$searchArrHeadAttr;$searchArrHeadValue;*)
Nel debugger, trascinare la variabile $searchResponse nella finestra Expression e si noterà che il risultato contiene parole chiave che corrispondono alla nostra query.
Di seguito è riportata una risposta JSON semplificata per la parola chiave “peace”:
{ "statuses":[ { "created_at": "Tue Nov 21 09:51:09 +0000 2017", "id":932909235528183808, "id_str": "932909235528183808", "text": "RT @AraiEij: @pintsize73 \\nPossa il tuo compleanno e ogni giorno essere pieno di amore, pace e gioia", .... "retweeted_status":{ "created_at": "Sun Nov 19 05:48:49 +0000 2017", "id":932123476025946112, "id_str": "932123476025946112", "text":"@pintsize73 Buon compleanno cara Marie \\nMay tuo compleanno e ogni giorno sia pieno di amore, pace", "truncated":true, "entities":{ "hashtags":[], "user_mentions":[ {...} ], "urls":[] }, "metadata":{ "iso_language_code": "en", "result_type": "recent" } } } ], "search_metadata":{ ... "query": "Pace", "refresh_url":"?since_id=932909235528183808&q=Peace&include_entities=1", ...} }
Ed ecco un’anteprima dell’interfaccia utente dei risultati della ricerca:
Per saperne di più con il nostro esempio
Date un’occhiata al nostro esempio di applicazione! Si noti che questo esempio richiede di seguire alcuni dei passaggi descritti. Infatti, per eseguire la demo è necessario ottenere i token di accesso a Twitter .