« Come funzionano le API autenticate di Facebook »

26 aprile 2010 @ 13:45

Ho passato un buon pomeriggio a capire come funzionano le API di facebook.

Per i profani:  le  API di facebook sono quegli strumenti che permettono di compiere operazioni sui profili e le fan-page senza passare dalla pagina di facebook. In pratica è possibile  ottenere la lista degli amici, ottenere le informazione di un utente e persino pubblicare sul profilo senza (quasi) passare dalla pagina di facebook.

Le API hanno funzionalità  limitate, a meno che tu non riesca a farti dare dal titolare del profilo un’autorizzazione specifica ad operare più profondamente sul suo profilo.

Come funziona la fazenda? Dopo un pomeriggio di sbattimenti ho compreso che la chiave di volta è l’applicazione.
Relazione sviluppatore-applicazione-utenteUn’applicazione è una sorta di entità presente su facebook. Chiunque può registrare un’applicazione, otterrà un identificativo e una chiave segreta (due codici, in soldoni).
Quanto un utente approva un’applicazione, le da il permesso di interagire con il proprio profilo, dal quel momento il proprietario dell’applicazione ha accesso al profilo dell’utente.
Il pratica l’applicazione non serve quasi a niente, è solo un oggetto utile per gestire le autorizzazioni all’accesso al profilo.

Una volta che hai convinto l’utente a dare il permesso alla tua applicazione, puoi indagare (e operare) sul suo profilo.

Per far questo devi ottenere prima una chiave di sessione che facebook chiama token. Per ottenere il token c’è una procedura alquanto complicata. Bisogna ottenere prima un codice intermedio per validare l’utente, il codice lo si può scambiare con il token.

Il primo  passo è far si che l’utente avvii una richiesta verso un server di facebook, passando l’id dell’applicazione e un url di una pagina che raccoglierà il codice intermedio.
La richiesta deve essere inviata da una client loggato, in pratica va inviata da un browser su cui si è fatto login in facebook.
Implicitamente significa che il codice intermedio e il token poi saranno validi solo per l’utente che ha iniziato la richiesta (ma va?).

A questo punto facebook verifica se il client è loggato (altrimenti viene richiesto il login) e se l’applicazione è stata autorizzata dall’utente (altrimenti viene richiesta l’autorizzazione).

Sequenza di connessione per ottenere un token FacebookSe tutto è ok,  viene generato il codice intermedio. Questo viene mandato all’url indicato in prima battuta. A questo url deve essere presente un servizio in grado di recuperare il codice, una volta recuperato non è più necessario coinvolgere l’utente per ottenere il token.

Il passo successivo è rimandare a facebook il codice intermedio, l’id dell’applicazione, il codice segreto dell’applicazione e una copia dell’url da cui si è recuperato il codice intermedio.

Se viene validato, facebook restituisce il token da cui si accede alle API e al profilo.

Da notare che sia il token che il codice intermedio hanno una validità temporanea (circa un paio di ore),  per cui lo sviluppatore può operare sul profilo per questo tempo dopo di che bisogna ripetere il procedimento dall’inizio.

Prima considerazione: la procedura di autenticazione deve essere iniziata dall’utente, quindi non basta farsi autorizzare l’applicazione per operare sul profilo. Se si vuole continuare a operare dopo che il token è scaduto bisogna che  l’utente re-inizi la procedura dal suo browser.

Seconda considerazione:  le operazioni dal primo al terzo passo fanno fatte dall’utente su un browser loggato in in facebook.  Non sono previsti metodi di login alternativi.
Anche per gli eventuali client da desktop facebook suggerisce aggiramenti abbastanza  aberranti.

Terza considerazione: lo sviluppatore è escluso dal processo di login fino  al terzo step, i due primi step vengono gestiti dall’utente e dal suo browser e sono per lo sviluppatore una black box.

Quarta considerazione:  qualcosa che non mi rimane chiaro è come fa il server che raccoglie il codice al punto 3 a capire da quale utente arriva l’autorizzazione.
Infatti questa informazione non viaggia da nessuna parte nella procedura, il dubbio che mi viene è che sia cura dello sviluppatore predisporre la url che riceverà il codice in modo da portare con se anche l’id dell’utente che l’ha generata.

Quinta considerazione: ma tutte quelle applicazioni che postano in automatico sui profili (tipo Farmville), come divolo fanno a farsi autorizzare a intervalli regolari? Il mio dubbio è che sia possibile per l’applicazione mettere una specie di  gancio che fa aprire la pagina di autorizzazione ogni volta che l’utente apre il suo profilo.
Suppongo (ma non ho indagato) che sia legato ai riquadri che le applicazioni possono installare nei profili utenti. Apri facebook, vai a vedere lo stato di farmville e questo scatena la procedura di login che permetterà agli sviluppatori di farmville di spammarti il profilo per due orette buone.

Un commento a “Come funzionano le API autenticate di Facebook”

  1. paolo ha detto:
    25 gennaio 2011 alle 18:19

    Ciao..
    grazie per le precisazioni,
    mi sto spaccando la testa sui token, mica avresti qualche esempio di utilizzo o link da indicarmi?

Lascia un commento