14 settembre 2009  1

Come accedere alle API di FriendFeed: sintassi delle chiamate, formato dei dati e gestione dell’autenticazione

friendfeed logoCome anticipato nel precedente articolo introduttivo, eccomi di nuovo a parlare delle API di FriendFeed. Questa volta esamineremo più in dettaglio la sintassi di accesso ai web service, il formato dei dati restituiti e una prima elementare gestione della modalità di autenticazione.

Il web service

L’accesso alle API avviene tramite delle semplici chiamate HTTP. In alcuni casi, come già ampiamente spiegato nella guida precedente, è necessario provvedere preventivamente ad una fase di autenticazione, soprattutto se i dati ottenuti in risposta appartengono a feed marcati come privati dai loro proprietari.

A scanso di equivoci è opportuno effettuare l’autenticazione a prescindere: ciò consente di poter ottenere delle risposte “sicure” da parte del web service interrogato e, soprattutto, evitare banali errori interpretativi nell’acquisizione delle stesse. E’ bene tenere presente che l’autenticazione non consente di avere una visione “globale” su tutta la banca dati disponibile, ma solo di un sottoinsieme rappresentato dal microuniverso costituito dai contatti (e dai contatti di questi) dell’utente autenticato.

Come già detto, l’accesso alle informazioni avviene tramite delle richieste HTTP di tipo GET.

I dati restituiti sono in formato JSON (Java Script Object Notation), ma possono essere alternativamente richiesti in formato XML, semplicemente aggiungendo nelle interrogazioni il parametro format=xml (o format=json se si vuole forzare il formato standard).

Personalmente preferisco richiedere i dati in risposta come XML, più che altro perché, sviluppando principalmente in ambiente ASP.NET, sono molto più semplici da gestire, sfruttando le classi native già disponibili.

Per la gestione tramite JSON è possibile utilizzare apposite librerie di inclusione per praticamente tutti i linguaggi e gli ambienti di sviluppo; tutti i riferimenti in merito possono essere reperiti appunto nel già citato sito dedicato.

Previa autenticazione è possibile non solo usufruire di operazioni in lettura, ma anche in scrittura. Per intenderci il programmatore può realizzare, ad esempio, una propria interfaccia che consenta di pubblicare i commenti ad un articolo pubblicato sul proprio blog, al relativo oggetto propagato su FriendFeed, e viceversa.

Le possibilità sono veramente notevoli e direttamente proporzionali alle capacità ed alla fantasia dello sviluppatore; allo stesso modo sono veramente tantissime le opzioni disponibili come argomenti sia di lettura che di scrittura.

In questo contesto sarebbe veramente molto prolisso (e anche un po’ complicato) descrivere tutta la documentazione; per questo motivo mi limiterò a formulare qualche piccolo esempio, invitando i più volenterosi a consultare la documentazione in inglese (che risulta abbastanza semplice anche se, a mio avviso, in alcuni punti troppo sintetica).

L’URI di base necessario per ogni richiesta HTTP sia in lettura che in scrittura è:

http://friendfeed-api.com/v2/

Ad esso vanno accodati di volta in volta le specifiche di dettaglio ed i parametri aggiuntivi. Ad esempio un interrogazione del tipo:

http://friendfeed-api.com/v2/feed/cristianofino?format=xml

produrrà un flusso XML relativo al feed dell’utente cristianofino (il sottoscritto) che potrà essere interpretato via codice per essere riprodotto o manipolato a seconda delle proprie necessità implementative.

Nello specifico, cristianofino corrisponde al feed_id dell’utente del quale vogliamo prelevare il feed. Il feed_id è sostanzialmente il nickname (o username) con cui ogni utente si registra su FriendFeed.

Un altro esempio può essere:

http://friendfeed-api.com/v2/picture/cristianofino

questo restituirà un riferimento ad un’immagine .jpg relativa all’avatar dell’utente selezionato mediante il solito feed_id (nell’esempio sempre quello del sottoscritto). Sempre per restare nell’esempio appena citato, l’aggiunta del parametro specifico size={ small | medium | large }, produrrà miniature di grandezza variabile da un minimo di 25 x 25 pixel, ad un massimo di 75 x 75 pixel.

Ad esempio:

http://friendfeed-api.com/v2/picture/cristianofino?size=large

avrà come output questa immagine:

Un altra applicazione interessante può essere quella relativa all’uso della funzione di ricerca:

http://friendfeed-api.com/v2/search?q=chiavi_di_ricerca&format=xml

in questo modo è possibile recuperare tutti gli elementi che contengono la (o le) chiave di ricerca indicata. E’ possibile indicare anche più di una keyword a patto di avere cura di separarle con il simbolo di addizione (+). Anche in questo caso è stato aggiunto il parametro che indica di produrre in risposta un flusso XML.

Ancora:

http://friendfeed-api.com/v2/url?url=www.miourl.com

analogamente al caso già visto, con questa sintassi siamo in grado di ottenere gli elementi che contengono un riferimento all’URI indicato.

In entrambi i casi è opportuno tenere presente che, trattandosi sempre di richieste HTTP, bisogna avere molta cautela nell’analisi dei caratteri passati come argomento dei parametri. La presenza di caratteri speciali, quali ad esempio punti interrogativi (?) oltre il simbolo canonico di inizio della parte parametrica, può dar luogo ad effetti indesiderati, che non sempre restituiscono messaggi di errore ma piuttosto file XML (o JSON) vuoti.

Come effettuare le prove di interrogazione

Una volta preso confidenza con il meccanismo di costruzione delle richieste HTTP, è estremamente semplice fare i propri esperimenti direttamente con un browser. Se si scegli il formato XML come risposta alle interrogazioni, consiglio di utilizzare FireFox, che visualizza ed indenta automaticamente il file prodotto; in questo modo si ha immediatamente una visione ordinata della struttura dati che poi si dovrà rielaborare via codice.

Sconsiglio caldamente l’uso di Internet Explorer, dato che, pur acquisendo correttamente il file XML prodotto, non lo reinterpreta segnalando l’impossibilità nella visualizzazione del feed.

In alternativa, gli affezionati della linea di comando, possono scaricarsi ed installarsi l’interprete CURL ed effettuare tutte le operazioni di testing delle API direttamente da una shell di sistema.

Ad ogni modo, se si preferisce utilizzare il browser, il mio consiglio è quello di effettuare un preventivo logout dal proprio account FriendFeed (o in alternativa svuotare la cache del browser dai cookieW). Questo consentirà di poter fare delle prove reali sulle interrogazioni che necessitano di autenticazione.

A tal proposito, se si usa in browser per provare l’accesso alle API, è opportuno sapere che, nel caso si cerchi di accedere a dati privati, il web service attiverà automaticamente una sessione in basic autentication. Per questo motivo verrà visualizzata una “popup window” che richiederà le credenziali di accesso.

FriendFeed Login HTTP Basci Autentication

La procedura di autenticazione

Come già ampiamente spiegato nell’articolo precedente, le API di FriendFeed prevedono tre differenti tipologie di autenticazione, che vanno utilizzate a seconda delle necessità e, soprattutto in dipendenza dalla tipologia di applicazione che si intende sviluppare.

Per le applicazioni web è consigliabile utilizzare la Basic Autentication: è molto rapida e semplice da implementare e richiede unicamente la username e, in luogo della password associata al nome utente, utilizza uno speciale codice denominato remote key legato all’utente stesso (e di concerto anche alla username).

La remote key può essere rigenerata dall’utente su sua richiesta, direttamente dalla pagine stessa dalla quale si può visionare. L’uso della remote key consente di non utilizzare la password associata alla username, dato che la Basic Autentication invia, come noto, i dati in chiaro.

Utilizzando CURL per sperimentare le richieste HTTP, è possibile effettuare direttamente la procedura di autenticazione, passando come parametri appunto la username e la remote key.

curl -v -u "username:remotekey"
http://friendfeed-api.com/v2/feed/home?format=xml

Non finisce qui ...

Nel terzo ed ultimo appuntamento su questo interessante argomento, vedremo più in dettaglio un esempio specifico relativo all’acquisizione dei commenti inviati tramite FriendFeed, ad un articolo pubblicato sul proprio blog.

Per ogni domanda, dubbio o chiarimento sugli argomenti affrontati, lo spazio dei commenti è come sempre a vostra disposizione.

Esprimi il tuo giudizio

Commenti (1) -

hermansji
hermansji
14 set 2009 alle 19:51  01
Grazie, mi serviranno i tuoi post!! Stavo giusto "tentando" di scrivermi un plug-in per friendfeed!!
.:.

Aggiungi Commento

biucitecode
  • Commento
  • Anteprima
Loading


| |   |  

Codice QR

Codice QR - cristianofino.net

Ultimi Commenti