La sorprendente crescita di Twitter è eguagliata solo dall'intuitiva API intuitiva per sviluppatori. In questa seconda parte della serie, impareremo di più sulle API di Twitter e su come lavorarci.
Troppa astrazione non è mai una buona cosa.
In questa era del Web 2.0, le applicazioni web che hanno un'API intuitiva e facile da usare hanno un netto vantaggio in quanto consentono agli sviluppatori di sfruttare e creare per la piattaforma e quindi catturare più utenti. Mentre ci avviciniamo al social web e ai mashup, una buona API non è più una bella aggiunta: è assolutamente necessaria. E ricorda, troppa astrazione non è mai una buona cosa. Mentre ci sono un certo numero di kit API là fuori per semplificare il lavoro con l'API in questione, non sarebbe bello sapere cosa sta succedendo in realtà? Non sarebbe eccitante decostruire il vero voodoo tra il kit e l'API? Sì, lo pensavo!
Per ogni funzionalità, ho intenzione di mostrarvi come ottenerlo in due modi: il primo utilizzando un linguaggio lato server, PHP in questo caso e il secondo utilizzando solo un linguaggio lato client, JavaScript. Ogni implementazione funzionerà separatamente e otterrà le funzionalità richieste. Sentiti libero di abbinare queste soluzioni per creare un ibrido. Gli esempi JavaScript utilizzeranno JSON come formato per il payload mentre per l'esempio PHP ho scelto XML.
La prima cosa che devi sapere sull'API di Twitter è che è RESTful. Per ridurre il gergo, significa che accedi agli URL appropriati utilizzando le richieste GET o POST per modificare, richiedere o manipolare i dati esposti dall'API.
Ci sono tre API di Twitter separate in realtà.
Ciascuna di queste API ha un proprio insieme distinto di funzionalità, peculiarità, vantaggi e svantaggi.
I metodi REST costituiscono il nucleo dell'API di Twitter e sono scritti dagli sviluppatori su Twitter stesso. Permette ad altri sviluppatori di accedere e manipolare tutti i dati principali di Twitter. Utilizzerai questa API per fare tutto il solito che vorresti fare con Twitter, tra cui il recupero degli stati, l'aggiornamento degli stati, la visualizzazione della timeline di un utente, l'invio di messaggi diretti e così via.
L'API di ricerca è in realtà il frutto dell'ingegno dei ragazzi di Summize Inc, una società che Twitter ha acquisito per la sua API. L'API di ricerca ti consente di guardare oltre te e i tuoi follower. Hai bisogno di questa API se stai cercando di visualizzare argomenti di tendenza e così via.
Finalmente abbiamo l'API del flusso. Questa API consente agli sviluppatori di campionare enormi quantità di dati in tempo reale. Poiché questa API è disponibile solo per gli utenti autorizzati, non lo esamineremo oggi.
È possibile accedere liberamente ai dati pubblici senza una chiave API. Quando si richiedono dati privati e / o dati specifici dell'utente, Twitter richiede l'autenticazione. Puoi autenticarti con Twitter usando uno dei due metodi.
Questo è il metodo predefinito di autenticazione di Twitter inizialmente lanciato e utilizzato ancora. In questo metodo, si passa il nome utente e la password come stringhe codificate Bse64 nell'intestazione della richiesta HTTP. Una richiesta GET di esempio sarebbe così.
GET /somefolder/index.html Host HTTP / 1.1: net.tutsplus.com Autorizzazione: base dXNlcm5hbWU6cGFzc3dvcmQ =
Sembra un po 'complicato, vero? Lasciatemi spiegare. Le prime due linee fanno parte di una richiesta GET standard. La terza riga è dove avviene tutta la magia. Ci assicuriamo che il server sappia che stiamo usando l'autenticazione di base per autenticarci e quindi passare la stringa codificata base 64 di username: password come il valore. Il server può quindi decodificare le credenziali, controllarle e fornire l'accesso se tutto corrisponde.
Twitter che supporta l'autenticazione di base è probabilmente uno dei motivi per cui è diventato così grande dal momento che ha permesso a una moltitudine di sviluppatori di svilupparsi per la piattaforma poiché la barriera di accesso è relativamente bassa. L'autenticazione di base è sufficiente per recuperare tutte le parti dell'API.
Twitter ha iniziato a supportare OAuth nel secondo trimestre del 2009. Gli utenti che utilizzano l'applicazione abilitata OAuth non hanno bisogno di divulgare le proprie password al programma e possono anche delegare il controllo al programma con più livelli di accesso. Tuttavia, non esamineremo l'implementazione OAuth di Twitter oggi. OAuth e l'implementazione del suo flusso di lavoro è un argomento piuttosto complesso e richiede un articolo a parte. Preferisco ignorare OAuth per questo articolo piuttosto che buttare fuori alcune spiegazioni un po 'cotte e scrivere codice basato su quelle spiegazioni.
"Twitter consente solo di effettuare un numero predefinito di chiamate alla sua API."
Prima di addentrarci nella parte relativa alla codifica, devo chiarire una cosa: Twitter ti consente solo di effettuare un numero predefinito di chiamate alla sua API. Il limite dell'API REST è pari a 150 per un'ora, mentre il limite dell'API di ricerca non è noto al momento. Per le chiamate autenticate, la chiamata viene dedotta dal limite di autenticazione dell'utente, mentre per le chiamate non autenticate viene detratta dalla quota dell'IP chiamante.
Ricorda, quando sviluppi un'applicazione, assicurati di aver memorizzato nella cache le informazioni o di rispettare il limite e rimanere all'interno di esso. Se ritieni che il limite preimpostato non sia sufficiente per la tua applicazione, puoi sempre richiedere la quotazione in bianco.
Invece di guardare un numero di metodi che probabilmente non userete mai, ho deciso di mostrarvi come eseguire le tre attività più comuni.
Penso che questo sia un sottoinsieme appropriato dell'API che copre direttamente l'API più utilizzata senza diffondersi troppo sottile coprendo una tonnellata di metodi. Con quello fuori mano, iniziamo!
La prima funzionalità che vedremo è la visualizzazione dello stato di un utente. Questo è l'uso più diffuso dell'API se uno sviluppatore web desidera visualizzare lo stato di un determinato utente senza ricorrere a un badge Twitter.
Visualizzazione di stato> testo '. - '.date ("g: i: A D, F jS Y", strtotime ($ response-> status-> created_at)); ?>
Il primo metodo utilizza PHP. È un metodo relativamente semplice in cui prendiamo semplicemente il file XML specifico dell'utente e quindi lo analizziamo per visualizzare lo stato corrente.
Per prima cosa convertiamo il file XML in un oggetto in modo che possiamo attraversarlo facilmente usando l'estensione SimpleXML che viene fornita di serie con PHP. Ora che l'oggetto è stato creato, troviamo solo il stato nodo e stampare il testo di stato e il tempo di creazione.
Ricorda, questo mostra solo lo stato attuale dell'utente. Se vuoi un elenco di aggiornamenti recenti, vedi sotto.
cURL è uno strumento da riga di comando e viene abilitato sulla maggior parte dei server ospitati. Per citare Wikipedia:
In informatica, cURL funziona come strumento da riga di comando per il trasferimento di file con sintassi URL.
È una libreria progettata per consentire agli utenti di connettersi a diversi tipi di server utilizzando protocolli diversi. Usando cURL è il metodo di scelta per tutte le librerie di Twitter là fuori e useremo lo stesso.
stato come $ stato) echo $ stato-> testo. '
da '$ Visualizzazione di stato> user-> SCREEN_NAME.' a '.date ("g: i: A D, F jS Y", strtotime ($ status-> created_at)).'
'; ?>
Lasciatemi spiegare. Innanzitutto, assegniamo il nostro nome utente e password per separare le variabili da utilizzare in seguito. Quindi ho impostato l'URL sul valore menzionato sopra. Poiché il metodo richiede l'autenticazione, inviamo il nostro nome utente e password.
Successivamente, eseguiamo la nostra chiamata e memorizziamo la risposta in una variabile separata. Quindi lo convertiamo in un oggetto XML valido e quindi analizziamo i dati, stampando lo stato e quando è stato pubblicato.
Ho formattato i dati e il tempo per apparire nel modo che voglio. Se vuoi date e orari fantasiosi 3 ore fa o 12 giorni fa, o avete bisogno di cercare uno snippet o di codice uno voi stessi. Twitter restituisce solo dati e orario normalmente formattati.
Riceverai un risultato simile a questo:
Io sono stupido. Non ho usato un IDE e ho perso una virgola sprecando 110 minuti. Ricordami di non provare il debugging quando sono assonnato o stanco. alle 6:01: PM Ven, 14 febbraio 2010 Alluvione di traffico. : O devo avere preventivato per questo numero di visitatori. Argh! Spero che niente si rompa. alle 8:51: PM gio, 13 febbraio 2010
L'uso di JavaScript per visualizzare il tuo stato è il modo più elegante di andare avanti poiché puoi caricarlo in modo asincrono dopo che la pagina è stata caricata, il che significa che, anche se Twitter è in downm o in ritardo, il tuo sito funziona allo stesso modo.
Useremo il metodo ajax di jQuery per fare tutto il nostro sporco lavoro oggi.
$ .ajax (url: "http://twitter.com/statuses/user_timeline/userid.json?callback=?", dataType: "json", timeout: 15000, success: function (data) $ ("# data "). html (" Dati ottenuti con successo!
"); per (i = 0; i"+ data [i] .text) +""; $ (" # data "). append (" "+ data [i] .created_at +"
");, errore: function () alert (" Failure! ");,);
Ancora una volta, un grosso pezzo di codice ma, ripartito, è davvero semplice. Usiamo la funzione AJAX di livello più basso di jQuery invece del metodo getJSON, poiché la chiamata di basso livello sembra essere più versatile.
Per prima cosa, definiamo l'URL e il tipo di dati. Aggiungiamo anche una funzione di callback all'URL per aggirare la restrizione sui domini incrociati sulla maggior parte dei browser. Senza questa richiamata, il nostro script non funzionerebbe; sarebbe solo restituire un errore e uscire.
Ho scelto di non autenticarsi, perché stiamo specificando un ID nell'URL, e quindi non abbiamo bisogno di autenticazione - questo e perché l'autenticazione di base non è veramente sicura per le informazioni sensibili. Non vuoi inviare la tua password su una linea non sicura.
Infine, la funzione di successo che viene chiamata quando non si incontrano errori. Analizziamo solo l'oggetto JSON restituito e stampiamo il testo e il tempo di creazione. #dati è solo un contenitore in cui mettiamo tutti i nostri dati.
Questo codice è il modello per tutti i tuoi metodi che accedono ai dati. Sono necessarie modifiche minime per modificarlo per funzionare con altri metodi API.
Per l'esempio di PHP, tutto ciò che devi fare è modificare il valore dell'URL in modo che punti a un nuovo metodo, e dovresti farlo per lo più. Se il metodo richiede parametri, è sufficiente aggiungerli direttamente all'URL stesso. Semplice come quella.
Lo stesso con l'esempio di JavaScript. Tutto quello che dovresti fare è cambiare l'URL richiesto dai metodi, e dovresti farlo. Assicurati di recuperare solo dati pubblici con il metodo JavaScript.
Ricorda, questo codice è la base per tutti gli altri metodi che recuperano i dati. Questo include metodi per ottenere i tuoi messaggi diretti, linee temporali, amici, follower e tweets citati. Basta cambiare l'url, aggiungere un parametro secondo necessità e tutto è pronto! Facile, no?
Con qualsiasi applicazione Twitter che stai creando, lasciare che gli utenti aggiornino il loro stato attraverso di essa è un gioco da ragazzi. Ricorda che in precedenza le applicazioni che utilizzavano l'autenticazione di base erano in grado di utilizzare una stringa di origine personalizzata per tutti i tweet inviati dalla loro applicazione. Ora, l'implementazione di OAuth è l'unico modo per ottenere una stringa personalizzata. In breve, se vuoi che tutti i tweet inviati dalla tua applicazione abbiano un link alla tua app, usa OAuth. Con quello fuori mano, vediamo il codice.
Possiamo usare cURL altrettanto facilmente per pubblicare su Twitter. Il codice è quasi lo stesso di prima tranne che cambiamo l'url in quello appropriato. Inoltre, ci assicuriamo che la pubblicazione sia abilitata e imposti i campi da pubblicare. Il metodo API richiede parametri di stato e pertanto impostiamo il valore della variabile di stato su questo parametro.
Ricordati di assicurarti che il testo da pubblicare sia codificato in UTF-8. Altrimenti, ci imbatteremmo in errori inutili.
Ora salviamo la risposta da utilizzare per dopo. In questo esempio, ho scelto di non fare nulla. Ma in un'applicazione pratica vorresti sicuramente mostrare un messaggio di successo / errore e / o visualizzare la risposta.
Pubblicare un aggiornamento di stato su Twitter utilizzando solo JavaScript sembra essere impossibile al momento, poiché non c'è modo di trasmettere l'ID e la password dell'utente. Con Flickr, tali credenziali vengono passate come parte della richiesta POST stessa. Con Twitter, questi dati devono essere inviati nelle intestazioni HTTP e non sembra esserci un modo per farlo.
Anche ignorando il fatto che non è possibile inviare credenziali al servizio, c'è ancora il problema di non essere in grado di effettuare richieste POST tra domini con l'oggetto XMLHttp. Questi due punti rendono i metodi API che richiedono una richiesta POST un rigoroso no-no con JavaScript.
Nel caso in cui sei interessato, un post di successo ti restituisce questa risposta.
Fri Aug 14 21:31:53 +0000 2009 3316091255 Test di cURL con l'API di Twitter falso falso 18118645 Tony / Siddharth lordtottuu India Gamer, sviluppatore, web designer, scrittore, geek. http://s3.amazonaws.com/twitter_production/profile_images/300532536/NVAGSoNIpS_o5XxbmB4pl-boGheY6JBASaiLiieGIAO6JTitHnRMNJa6ktCPRMQW_normal.jpg http://ssiddharth.com falso
Le tecniche di codice illustrate sopra consistono nella base per tutti i tuoi dati che inviano dati a Twitter. Ciò include i metodi che ti consentono di seguire / smettere di seguire qualcuno, inviare messaggi diretti, creare preferiti, bloccare le persone e così via e così via.
L'unica cosa che dovresti fare è cambiare questi URL, vedere se richiedono parametri aggiuntivi e aggiungerli se necessario. Nient'altro richiesto.
Lasciare agli utenti la ricerca tramite Twitter di informazioni è potenzialmente una necessità importante di un'applicazione. A tale scopo, possiamo utilizzare l'API di ricerca per interrogare Twitter.
risultati come $ risultato) echo $ result-> text; ?>
Il codice sopra ti permette di cercare Twitter per tweets che fanno riferimento a Envato. Come al solito, cambiamo l'URL in modo che punti al metodo API corretto e procediamo. Poiché questo metodo è disponibile solo nei formati JSON o ATOM, ho scelto di andare con JSON.
Ho usato il built-in di PHP json_decode funzione per convertirlo in un oggetto in modo da poter analizzare facilmente la risposta. In questo esempio, ho solo stampato i tweet stessi. Nelle tue applicazioni, probabilmente vorrai visualizzare di più. Di seguito è riportata una risposta campione.
[testo] => @nsethi controlla http://www.envato.com/ se vuoi dei tutori malati ... Ne parlerò più tardi. [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] => Ven, 14 ago 2009 21:10:42 +0000
Come puoi vedere, sono disponibili molte informazioni sull'utente e sul tweet stesso. Sentiti libero di mescolare e abbinare.
$ .ajax (url: "http://search.twitter.com/search.json?q=somestring&callback=?", dataType: "json", timeout: 15000, success: function (data) // parse data qui, errore: function () alert ("Failure!");,);
Come al solito, utilizziamo il metodo ajax per eseguire il ping del servizio di ricerca di Twitter. Proprio come nell'esempio precedente, abbiamo incluso una funzione di callback per superare la restrizione cross-domain.
Un esempio di risposta, prelevato direttamente da Twitter, sembra così.
"risultati": ["testo": "@ twitterapi http: \ / \ / tinyurl.com \ / ctrefg", "to_user_id": 396524, "to_user": "TwitterAPI", "from_user": "jkoum", "id": 1478555574, "from_user_id": 1833773, ... troncato ...], "since_id": 0, "max_id": 1480307926, "refresh_url": "? since_id = 1480307926 & q =% 40twitterapi", "results_per_page": 15, " next_page ":"? page = 2 & max_id = 1480307926 & q =% 40twitterapi "," completed_in ": 0.031704," page ": 1," query ":"% 40twitterapi "
Come nota a margine, il metodo di ricerca può essere utilizzato in molti modi.
Ho deciso di limitarmi a mostrare come leggere e scrivere su un servizio utilizzando la sua API. In questo modo, posso concentrarmi solo su quei metodi specifici. E anche perché la maggior parte dei metodi si basa su queste basi. Se si desidera restituire la cronologia di un amico, è sufficiente modificare l'URL e analizzare la risposta con il minimo sforzo.
Lo stesso accade se si desidera inviare un messaggio diretto a un altro utente o menzionare un altro utente. Le basi del post sono ancora lì. Devi solo aggiungere un parametro o due per farlo accadere. Non ha senso coprire tutto ciò quando posso solo spiegare le basi molto più chiaramente.
Spero che tu abbia imparato di più su come lavorare con le API di Twitter oggi. Come sempre, fammi sapere, tramite i commenti, se hai bisogno di aiuto!