Vzhledem k tomu, že každou sekundu přichází přibližně 6 000 tweetů( tj. více než 350 000 tweetů za minutu, 500 milionů tweetů denně, což odpovídá přibližně 200 miliardám tweetů ročně), bylo by skvělé, kdybychom mohli vyhledávat ty, které se týkají konkrétního tématu, a ne lavinu tweetů, které nás nezajímají. Dobrá zpráva! Twitter poskytuje rozhraní REST Search API, které je pro vyhledávání tweetů skvělé.
V tomto příspěvku probereme, jak použít rozhraní Twitter Search API s aplikací 4D (Přejít na příklad databáze).
přístupové tokeny twitteru
Chcete-li používat rozhraní API pro vyhledávání Twitteru, potřebujete přístupové tokeny. Ty jsou povinné pro odesílání požadavků na rozhraní API. Abyste tyto tokeny získali, musíte si vytvořit aplikaci Twitter ( bezplatný, ale nezbytný krok):
- Vytvořte si účet Twitter (pokud jej ještě nemáte).
- Přejděte na stránku https://dev.twitter.com/apps/new a přihlaste se.
- Klikněte na tlačítko „Create New App“ (Vytvořit novou aplikaci), vyplňte formulář, odsouhlaste podmínky a klikněte na tlačítko „Create your Twitter application“ (Vytvořit aplikaci Twitter).
- Dále na kartě „Keys and Access Tokens“ zkopírujte svůj „API key“ a „API secret“.
- Přejděte dolů a klikněte na „Create my access token“. Zkopírujte svůj „Access token“ a „Access token secret“. Tím udělíte svému účtu Twitter přístup k používání tohoto rozhraní API. Poté se vám zobrazí následující informace:
Poznámka: Tyto tokeny by měly být považovány za stejně citlivé jako hesla a nesmí být sdíleny nebo distribuovány nedůvěryhodným stranám.
ověřování
Nyní, když máme své tokeny, si zašpiníme ruce a napíšeme ověřovací kód. K tomu použijeme postup„Ověřování pouze pomocí aplikace„. Ten umožňuje aplikaci vydávat ověřené požadavky za sebe, nikoli jménem konkrétního uživatele. Tento proces vyžaduje, aby aplikace:
- zakódovat svůj spotřebitelský klíč a tajemství.
- provést požadavek na koncový bod POST oauth2 / token a vyměnit tato pověření za token na doručitele.
- použít tento token nositele pro ověření při přístupu k rozhraní REST API.
Zde je návod, jak to provést pomocí 4D:
- Klíč spotřebitele a zakódované tajemství spotřebitele spojte do jednoho řetězce se znakem dvojtečky „:“.
- Převeďte svůj řetězec na BLOB pomocí příkazu TEXT TO BLOB příkazem.
- Zakódujte blob příkazem BASE64 ENCODE příkazem.
SET BLOB SIZE(vxBlob;0)
$consumerKey :="zde je váš spotřebitelský klíč"
$consumerSecret :="zde je vaše spotřebitelské tajemství"
TEXT TO BLOB (
$consumerKey+": "+$consumerSecret; vxBlob; UTF8 text without length)
BASE64 ENCODE (
vxBlob; $authBasicTxt)
.
- Výslednou hodnotu je třeba vyměnit za token nositele zadáním požadavku POST oauth2 / token. Tento požadavek se provádí pomocí příkazu 4D HTTP Request a selektorem HTTP POST method. Musí obsahovat hlavičku Authorization a Content-Type, přičemž tělo požadavku je ve tvaru 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;*)
- Ujistěte se, že požadavek HTTP byl úspěšný, a to ověřením, že stavový kód odpovědi je 200. (Více informací o stavových kódech HTTP)
- Odpověď HTTP rozeberte pomocí příkazu JSON Parse příkazem a poté uložte hodnotu vlastnosti access_token do proměnné.
C_OBJECT($jsonResponse)
$jsonResponse:=JSON Parse($response)
$accessToken :=OB Get($jsonResponse; "access_token";Is text)
- Tento token nositele bude použit k vystavení požadavku na naše vyhledávací rozhraní API (podrobnosti v části vyhledávání tweetů ). Proto si jej zkopírujte a mějte jej u sebe.
vyhledávání tweetů
Složitá část je u konce. Nyní, když máme náš přístupový token, můžeme jej použít k vystavení požadavku na GET search/tweets.json:
$accessToken:="Váš přístupový token ze sekce ověřování"
ARRAY TEXT ($searchArrHeadAttr;0)
ARRAY TEXT ($searchArrHeadValue;0)
APPEND TO ARRAY ($searchArrHeadAttr; "Autorizace")
APPEND TO ARRAY ($searchArrHeadValue; "Nosič "+$accessToken)
$query:="mír"
$url :="https://api.twitter.com/1.1/search/tweets.json?q="+$query
$result :=HTTP Request(HTTP GET method;$url;$searchBody;$searchReponse;$searchArrHeadAttr;$searchArrHeadValue;*)
V ladicím programu přetáhněte proměnnou $searchResponse do okna Expression a všimněte si, že výsledek obsahuje klíčová slova odpovídající našemu dotazu.
Níže je uvedena zjednodušená odpověď JSON pro klíčové slovo „peace „:
{ "statuses":[ { "created_at": "Tue Nov 21 09:51:09 +0000 2017", "id":932909235528183808, "id_str": "932909235528183808", "text": "RT @AraiEij: @pintsize73 \\nAť jsou tvé narozeniny a každý den naplněny láskou, mírem a radostí", .... "retweeted_status":{ "created_at": "Sun Nov 19 05:48:49 +0000 2017", "id":932123476025946112, "id_str": "932123476025946112", "text":"@pintsize73 Všechno nejlepší, drahá Marie \\nAť jsou tvé narozeniny a každý den naplněny láskou, mírem", "truncated":true, "entities":{ "hashtags":[], "user_mentions":[ {...} ], "urls":[] }, "metadata":{ "iso_language_code": "cs", "result_type": "recent" } } } ], "search_metadata":{ ... "query": "Peace", "refresh_url":"?since_id=932909235528183808&q=Peace&include_entities=1", ...} }
A zde je náhled do uživatelského rozhraní výsledku vyhledávání:
Podívejte se na další náš příklad
Podívejte se na náš příklad aplikace! Vezměte prosím na vědomí, že tento příklad vyžaduje provedení některých popsaných kroků. Ve skutečnosti budete muset získat přístupové tokeny pro Twitter , abyste mohli ukázku spustit.