Scufundați-vă în API-ul Twitter

Cresterea uimitoare a Twitter-ului este rivalizata doar de API-ul intuitiv, dezvoltator prietenos. În această a doua parte a seriei, vom afla mai multe despre API-ul Twitter și cum să lucrăm cu acesta.

Prea multă abstracție nu este niciodată un lucru bun.

În această epocă Web 2.0, aplicațiile web care au un API ușor de utilizat și intuitiv au un avantaj distinctiv, deoarece permit dezvoltatorilor să exploateze și să construiască pentru platformă și astfel să capteze mai mulți utilizatori. Pe măsură ce ne mutăm spre web-ul social și mashup-uri, un API bun nu mai este un plus frumos: este absolut necesar. Și amintiți-vă, prea multă abstracție nu este niciodată un lucru bun. Deși există un număr de kituri API acolo pentru a simplifica lucrul cu API-ul în cauză, nu ar fi bine să știm ce se întâmplă de fapt sub capota? Nu ar fi interesant să deconstruim voodoo-ul real care se întâmplă între kit și API? Da, m-am gândit așa!


Înainte de a începe

Pentru fiecare funcționalitate, vă voi arăta cum să o atingeți în două moduri: primul care utilizează o limbă de server, PHP în acest caz, iar al doilea folosind doar limbajul clientului, JavaScript. Fiecare implementare va funcționa separat și va atinge funcționalitatea necesară. Simțiți-vă liber să amestecați și să potriviți aceste soluții pentru a crea un hibrid. Exemplele JavaScript vor folosi JSON ca format pentru sarcina utilă, în timp ce pentru exemplul PHP am ales XML.


Twitter API Elementele de bază

Primul lucru pe care trebuie să-l cunoașteți despre API-ul Twitter este că este RESTful. Pentru a reduce jargonul, înseamnă că accesați adresele URL adecvate utilizând cererile GET sau POST pentru a modifica, solicita sau manipula datele expuse de API.

Există de fapt trei API-uri Twitter independente.

  • API-ul standard bazat pe REST
  • API-ul de căutare
  • API-ul Stream

Fiecare dintre aceste API-uri are setul distinct de funcționalități, trăsături, avantaje și dezavantaje.

REST API

Metodele REST constituie nucleul API-ului Twitter și sunt scrise de către distribuitorii de pe Twitter în sine. Permite altor dezvoltatori să acceseze și să manipuleze toate datele principale ale Twitter-ului. Utilizați acest API pentru a face toate lucrurile obișnuite pe care doriți să le faceți cu Twitter, inclusiv pentru a obține statute, a actualiza starea, a afișa cronologia unui utilizator, a trimite mesaje directe și așa mai departe.

API de căutare

API-ul de căutare este de fapt creatura băieților de la Summize Inc, o companie pe care Twitter a achiziționat-o pentru API-ul său. API-ul de căutare vă permite să priviți dincolo de dvs. și de urmașii dvs. Aveți nevoie de acest API dacă doriți să vedeți subiecte tendențioase și așa mai departe.

Stream API

În cele din urmă avem API pentru flux. Acest API permite dezvoltatorilor să preleveze cantități uriașe de date în timp real. Deoarece acest API este disponibil numai utilizatorilor aprobați, nu vom trece peste acest lucru astăzi.


Autentificarea și tot ce e Boohockey

Datele publice pot fi accesate gratuit fără o cheie API. Atunci când solicită date private și / sau date specifice utilizatorului, Twitter necesită autentificare. Puteți autentifica prin Twitter utilizând oricare din cele două metode.

Autentificare de bază

Aceasta este metoda implicită de autentificare Twitter inițial lansată și încă utilizată. În această metodă, introduceți numele de utilizator și parola ca șiruri de caractere codate Bse64 în antetul solicitării HTTP. O solicitare de eșantion GET ar arăta așa.

GET /somefolder/index.html HTTP / 1.1 Host: net.tutsplus.com Autorizație: Basic dXNlcm5hbWU6cGFzc3dvcmQ =

Arată un pic cam complicat, nu-i așa? Lasă-mă să explic. Primele două linii fac parte dintr-o solicitare GET standard. A treia linie este locul în care se petrec toate magiile. Ne asigurăm că serverul știe că folosim auth de bază pentru a se autentifica cu el și apoi trece în șirul de bază codat 64 nume utilizator, parola ca valoare. Serverul poate apoi să decodeze acreditările, să le verifice și să ofere acces dacă totul se potrivește.

Twitterul care susține autentificarea de bază este probabil unul dintre motivele pentru care a devenit atât de mare, deoarece a lăsat o mulțime de dezvoltatori să se dezvolte pentru platformă, deoarece bariera de intrare este relativ scăzută. Autorizarea de bază este suficientă pentru a prelua toate părțile din API.

OAuth

Twitter a început să susțină serviciul OAuth în al doilea trimestru al anului 2009. Utilizatorii care utilizează aplicația activată OAuth nu trebuie să-și divulge parolele în program și pot, de asemenea, delega controlul asupra programului cu mai multe niveluri de acces. Cu toate acestea, nu vom analiza astăzi implementarea OAuth de pe Twitter. OAuth și implementarea fluxului de lucru este un subiect destul de complex și necesită un articol propriu. Aș prefera să sărind peste OAuth pentru acest articol, în loc să arunc câteva explicații pe jumătate coapte și să scriu un cod pe baza acestor explicații.


Prudență

"Numai Twitter vă permite să efectuați un număr predefinit de apeluri către API-ul său."

Înainte de a merge în partea de codificare, trebuie să fac un lucru absolut clar: Twitter vă permite doar să faceți un număr predefinit de apeluri către API-ul său. Limita API-ului REST este de 150 pentru o oră, în timp ce limita API-ului de căutare nu este dezvăluită încă de acum. Pentru apelurile autentificate, apelul este dedus din limita utilizatorului de autentificare, în timp ce pentru apelurile neauthenticate, acesta este dedus din cota IP a apelantului.

Rețineți că, atunci când dezvoltați o aplicație, asigurați-vă că stocați informațiile în cache sau respectați limita și rămâneți în ea. Dacă credeți că limita prestabilită este insuficientă pentru aplicația dvs., puteți aplica întotdeauna înregistrarea albă.


Cele mai comune sarcini

În loc să vă uitați la o serie de metode pe care probabil nu le veți folosi vreodată, am decis să vă arăt cum să faceți cele trei sarcini cele mai comune.

  • Obținerea statutului dvs.
  • Actualizați starea dvs.
  • Căutarea pe Twitter

Cred că aceasta este o submulțime adecvată a API care acoperă direct ceea ce este cel mai folosit pentru API, fără a se răspândi prea subțire prin acoperirea unei tone de metode. Cu asta din drum, să începem!


Obținerea statutului

Prima funcție pe care o vom uita este afișarea stării utilizatorului. Aceasta este cea mai populară utilizare a API în cazul în care un dezvoltator web dorește să afișeze statutul unui anumit utilizator fără a recurge la o insignă Twitter.

Metoda PHP # 1: recuperare directă

 status> text.“ - ".date (" g: i: A D, F jS Y ", strtotime ($ răspuns-> status-> created_at)); ?>

Prima metodă utilizează PHP. Este o metodă relativ simplă în care apucam doar fișierul XML specific utilizatorului și apoi îl analizăm pentru a afișa starea curentă.

Mai întâi convertim fișierul XML într-un obiect, astfel încât să putem traversa cu ușurință prin el folosind extensia SimpleXML care vine standard cu PHP. Acum că obiectul a fost creat, găsim doar stare nod și tipăriți textul de stare și timpul de creare.

Rețineți că aceasta afișează numai starea curentă a utilizatorului. Dacă doriți o listă cu actualizările recente, consultați mai jos.

Metoda PHP # 2: cURL

cURL este un instrument de linie de comandă și este activat pe majoritatea serverelor găzduite. Pentru a cita Wikipedia:

În calcul, cURL funcționează ca un instrument de linie de comandă pentru transferul fișierelor cu sintaxă URL.

Este o bibliotecă concepută pentru a permite utilizatorilor să se conecteze la diferite tipuri de servere utilizând diferite protocoale. Utilizarea cURL este metoda de alegere pentru toate bibliotecile din Twitter acolo și vom folosi același lucru.

 stare ca $ status) echo $ status-> text. "
de '$ status> user-> SCREEN_NAME.' la data. ("g: i: A D, F jS Y", strtotime ($ status-> created_at)) ".

"; ?>

Lasă-mă să explic. Mai întâi, atribuim numele de utilizator și parola pentru a separa variabilele care vor fi utilizate mai târziu. Apoi am setat adresa URL la valoarea menționată mai sus. Deoarece metoda necesită autentificare, trimitem numele de utilizator și parola.

Apoi, executăm apelul nostru și stocăm răspunsul într-o variabilă separată. Apoi îl convertim într-un obiect XML valid și apoi analizăm datele, imprimând starea și când a fost postat.

Am formatat datele și timpul pentru a vedea cum vreau. Dacă doriți date de fantezie și momente asemănătoare Acum 3 ore sau Acum 12 zile, fie că trebuie să căutați un fragment sau să vă codificați unul singur. Twitter returnează numai date și timp formatate în mod normal.

Veți primi o ieșire similară cu aceasta:

 Sunt prost. Nu a folosit un IDE și a ratat o virgulă pierzând 110 de minute. Amintește-mi să nu încerc să fac depanări atunci când sunt somnoros sau obosit. la 6:01: PM Vineri, 14 februarie 2010 Inundații de trafic. : Trebuie să fiu bugetat pentru mulți vizitatori. Argh! Speranța că nu se rupe nimic. la 8:51: PM Jo, 13 februarie 2010

JavaScript

Utilizarea JavaScript pentru a afișa starea dvs. este cel mai elegant mod de a merge înainte, deoarece îl puteți încărca asincron după ce pagina a fost încărcată, ceea ce înseamnă că, chiar dacă Twitter este downm sau este tardy, site-ul dvs. funcționează la fel.

Vom folosi metoda ajax de la jQuery pentru a face astăzi toată munca noastră murdară.

 $ .ajax (url: "http://twitter.com/statuses/user_timeline/userid.json?callback=?", dataType: "json", timeout: 15000, succes: date "). html (" Datele obținute cu succes! 
") pentru (i = 0; i"+ date [i] .text) +"

"; $ (" # data "); append ("

"+ date [i] .created_at +"

");, eroare: function () alert (" Failure! ");,);

Din nou, o mare bucată de cod, dar, defalcate, este foarte simplu. Folosim funcția AJAX de nivel inferior al jQuery în locul metodei getJSON, deoarece apelul la nivel scăzut pare a fi mai versatil.

În primul rând, definim URL-ul și tipul de date. De asemenea, adăugăm o funcție de apel invers la adresa URL pentru a ocoli restricția pe mai multe domenii. Fără această invitație de apel, scriptul nostru nu ar fi rulat; tocmai a revenit la o eroare și a renunțat.

Am ales să nu autentificăm, deoarece specificăm un ID în URL și, prin urmare, nu avem nevoie de autentificare - asta și deoarece auth-ul de bază nu este într-adevăr sigur pentru informații sensibile. Nu doriți să trimiteți parola pe o linie nesigură.

În cele din urmă, funcția de succes care se numește atunci când nu se întâlnesc erori. Tocmai analizăm obiectul returnat JSON și tipărim textul și timpul de creare. #date este doar un container unde ne punem toate datele.

O notă rapidă

Acest cod este șablonul pentru toate metodele care accesează datele. Sunt necesare schimbări foarte minime pentru a le modifica pentru a funcționa cu alte metode API.

Pentru exemplul PHP, tot ce trebuie să faceți este să modificați valoarea URL pentru a indica o metodă nouă și ar trebui să fiți mai mult. Dacă metoda necesită parametri, trebuie doar să le adăugați direct la adresa URL în sine. Simplu ca asta.

La fel cu exemplul JavaScript. Tot ce trebuie să faceți este să schimbați adresa URL pe care o solicită metodele și ar trebui să o faceți. Asigurați-vă că preluați numai date publice cu metoda JavaScript.

Rețineți că acest cod este baza pentru toate celelalte metode de recuperare a datelor. Acestea includ metodele de obținere a mesajelor dvs. directe, a liniilor de timp, a prietenilor, a adepților și a tweeturilor menționate. Trebuie doar să schimbați urlul, să adăugați un parametru după cum este necesar și veți fi setați! Ușor, nu?


Actualizarea Statutului

Cu orice aplicație Twitter pe care o creați, permițându-i utilizatorilor să își actualizeze statutul prin intermediul acestuia este un proces fără sens. Rețineți că aplicațiile anterioare care utilizează auth de bază au reușit să utilizeze un șir de surse personalizate pentru toate tweeturile trimise din aplicația lor. Acum, implementarea OAuth este singura modalitate de a obține un șir personalizat. Pe scurt, dacă doriți ca toate mesajele trimise de la aplicația dvs. să aibă un link înapoi la aplicația dvs., utilizați OAuth. Cu asta, să vedem codul.

PHP

 

Putem folosi cURL la fel de ușor de postat pe Twitter. Codul este aproape la fel ca înainte, cu excepția faptului că schimbăm urlul la cel corespunzător. De asemenea, ne asigurăm că postarea este activată și setați câmpurile care urmează să fie postate. Metoda API necesită parametrii de stare și, prin urmare, setăm valoarea parametrului de stare la acest parametru.

Nu uitați să vă asigurați că textul care urmează să fie postat este codificat în UTF-8. În caz contrar, eram în erori inutile.

Acum salvăm răspunsul care va fi folosit mai târziu. În acest exemplu, am ales să nu fac nimic. Dar într-o aplicație practică ați dori cu siguranță să afișați un mesaj de succes / eroare și / sau să afișați răspunsul.

JavaScript

Postarea unei actualizări de stare la Twitter folosind doar JavaScript pare a fi imposibilă chiar acum, deoarece nu există nicio modalitate de a transmite codul de utilizator și parola utilizatorului. Cu Flickr, aceste acreditări sunt transmise ca parte a cererii POST în sine. Cu Twitter, aceste date trebuie trimise în antetele HTTP, și nu pare să existe o modalitate de a face acest lucru.

Chiar ignorând faptul că nu puteți trimite acreditări la serviciu, există încă problema de a nu fi capabil să facă cereri POST cu domenii multiple cu obiectul XMLHttp. Aceste două puncte fac ca metodele API care necesită o solicitare POST să aibă un strict nu-nu cu JavaScript.

În cazul în care sunteți interesat, un mesaj de succes vă oferă acest răspuns.

    Vineri 14 Aug 21:31:53 +0000 2009 3316091255 Testarea cURL cu API-ul Twitter API-ul fals   fals   18118645 Tony / Siddharth lordtottuu India Gamer, dezvoltator, designer web, scriitor, geek.  http://s3.amazonaws.com/twitter_production/profile_images/300532536/NVAGSoNIpS_o5XxbmB4pl-boGheY6JBASaiLiieGIAO6JTitHnRMNJa6ktCPRMQW_normal.jpg http://ssiddharth.com fals  

O notă rapidă

Tehnicile de cod discutate mai sus constau în baza tuturor datelor dvs. care trimite date către Twitter. Acestea includ metode care vă permit să urmăriți sau să vă retrageți de la o persoană, să trimiteți mesaje directe, să creați favorite, să blocați persoane și așa mai departe și așa mai departe.

Singurul lucru pe care ar trebui să-l faceți este să modificați aceste adrese URL, să vedeți dacă acestea necesită parametri suplimentari și să le adăugați după cum este necesar. Nimic altceva nu este necesar.


Căutarea pe Twitter

Permițând utilizatorilor să caute prin Twitter informații este o potențială necesitate a unei aplicații. În acest scop, putem folosi API-ul de căutare pentru interogarea Twitterului.

PHP

 rezultatele ca rezultat $) echo $ result-> text; ?>

Codul de mai sus vă permite să căutați Twitter pentru tweets care se referă la Envato. Ca de obicei, schimbați adresa URL pentru a indica metoda API corectă și continuați. Deoarece această metodă este disponibilă numai în formate JSON sau ATOM, am ales să merg cu JSON.

Am folosit PHP-ul încorporat json_decode funcția de ao transforma într-un obiect astfel încât să putem parsa răspunsul cu ușurință. În acest exemplu, am tipărit numai tweets-ul însuși. În aplicațiile dvs., probabil că doriți să afișați mai multe. Un răspuns eșantion este mai jos.

 [text] => @nsethi verificați http://www.envato.com/ dacă vreți niște tutse bolnave ... Vreau să fac blog despre asta mai târziu. [to_user_id] => 1273919 [to_user] => nsethi [from_user] => thinklime [id] => 3315720513 [from_user_id] => 33020944 [iso_language_code] => en source => Tweetie [profile_image_url] => http: s3.amazonaws.com/twitter_production/profile_images/201032569/idTwitter_normal.jpg [created_at] => Vineri, 14 Aug 2009 21:10:42 +0000

După cum puteți vedea, sunt disponibile multe informații despre utilizator și tweetul în sine. Simțiți-vă liber să amestecați și să vă potriviți.

JavaScript

 $ .ajax (url: "http://search.twitter.com/search.json?q=somestring&callback=?", dataType: "json", timeout: 15000, succes: functie (date) // parse date aici, eroare: funcție () alertă ("Failure!");,);

Ca de obicei, folosim metoda ajax pentru ping serviciul de căutare Twitter. La fel ca în exemplul precedent, am inclus o funcție de apel invers pentru a trece peste restricționarea pe mai multe domenii.

Un exemplu de răspuns, scos direct de pe Twitter, arată așa.

 "rezultate": ["text": "@ twitterapi http: \ / \ tinyurl.com \ / ctrefg", "to_user_id": 396524, "to_user": "TwitterAPI", "from_user": "jkoum"; "id": 1478555574, "from_user_id": 1833773, "truncated ...]," since_id ": 0," max_id ": 1480307926," refresh_url " next_page ":"? page = 2 & max_id = 1480307926 & q =% 40twitterapi "," completed_in ": 0.031704," page ": 1," query ":"% 40twitterapi "

Ca o notă laterală, metoda de căutare poate fi utilizată într-o varietate de moduri într-adevăr.

  • ?q = Envato - Căutări pentru tweets conținând șirul Envato
  • ?q = # Envato - Căutări pentru hashtags de Envato
  • ?expresie = Envato + piață - Căutări pentru tweets conținând sintagma piață Envato
  • ?q = de la: NETTUTS - Returnează toate tweeturile din NETTUTS
  • ?q = la: NETTUTS - Returnează toate tweeturile la NETTUTS

De ce nu sunt acoperite alte metode

Am decis să mă limitez să arăt cum să citesc și să scriu la un serviciu folosind API-ul său. În acest fel, mă pot concentra doar pe acele metode specifice. Și, de asemenea, pentru că majoritatea metodelor se bazează pe aceste elemente de bază. Dacă doriți să întoarceți cronologia unui prieten, tocmai ați schimba adresa URL și ați analizat răspunsul cu o reacție minimă.

Același lucru se întâmplă dacă doriți să trimiteți un mesaj direct unui alt utilizator sau să menționați un alt utilizator. Elementele de bază ale postării sunt încă acolo. Trebuie doar să adăugați un parametru sau două pentru a face ca totul să se întâmple. Nu are sens să acopere toate aceste lucruri atunci când pot explica foarte clar noțiunile de bază.


Concluzie

Sper că ați învățat mai multe despre cum să lucrați astăzi cu API-ul Twitter. Ca întotdeauna, dați-mi voie să știu, prin intermediul comentariilor, dacă aveți nevoie de ajutor!

Cod