Blog

July 08, 2009 16:57 - 6 comments

Ok, vi risparmio la battuta sugli insetti :)

Facebook DeveloperFacebook mette a disposizione di tutti gli utenti/programmatori un comodo set di funzioni, che in gergo si chiamano API (Application Programming Interface), scritte in vari linguaggi web, per interagire con la piattaforma del popolare social network e sviluppare le proprie applicazioni, siano esse integrate in Facebook (la maggior parte sono così) oppure applicazioni “stand-alone”, cioè fruibili da un sito esterno ma collegate alla banca dati di Facebook.

Fb rende l’impatto tra il programmatore e le API molto semplice, ponendolo di fronte ad un’interfaccia per gli sviluppatori che guida passo passo nella creazione delle applicazioni, integrandosi con utili strumenti come il Wiki ed una Test Console, che permette di effettuare chiamate di prova alle varie funzioni, specificandone i parametri, e ricevendo in risposta il relativo output in formato leggibile.

Le API si compongono di una parte che gira lato server dell’utente, le librerie client, ed una parte in formato markup che viene processata dal server di Facebook, il quale produce normali tag HTML interpretando un linguaggio ideato da Facebook chiamato FBML.

Il programmatore potrà utilizzare le librerie client ufficiali in PHP oppure una di quelle non ufficiali, disponibili in tantissimi linguaggi tra cui Java, Ruby on Rails, Perl, Python, .Net.
Con queste librerie bisognerà produrre un codice sorgente, che avrà un output in HTML, XML oppure FBML e che, anche nel caso di applicazioni da integrare in Facebook, dovrà essere ospitato presso un server web esterno per poi essere collegato a Facebook tramite l’interfaccia di amministrazione dell’applicazione. Quindi bisognerà trovare un hosting web, anche gratuito, che fornisca lo spazio per l’applicazione.

Facebook non chiede nient’altro, perchè consente ai programmatori di salvare le informazioni utilizzate dalle applicazioni in un vero e proprio database, il DataStore, in cui è possibile memorizzare i dati necessari a ciascun utente, senza doversi procurare un database su un server esterno, che costituirebbe una spesa sicuramente più grossa dello spazio web.
Anche per quanto riguarda il database Facebook ha “inventato” qualcosa: si chiama FQL, ed è un derivato del SQL che ha lo scopo di interrogare il database di Facebook ponendo alcune restrizioni sui permessi di accesso alle tabelle, perchè ogni utente può accedere solo alle informazioni proprie e dei propri amici che le condividono, non di più.

Per iniziare, una applicazione di esempio potrebbe essere questa:


<?php
require_once ‘client/facebook.php’;

$appapikey = ‘YOUR_API_KEY’;
$appsecret = ‘YOUR_APP_SECRET’;
$facebook = new Facebook($appapikey, $appsecret);

$user_id = $facebook→require_login();
$friends = $facebook→api_client→friends_get();
?>

Ciao, !

I tuoi amici:


    <? foreach ($friends as $friend) { ?>
  • <? } ?>


?>

YOUR_API_KEY e YOUR_APP_SECRET vanno sostituiti con i codici assegnati da Facebook, che identificano univocamente l’applicazione e le consentono di effettuare le chiamate alle API per le quali è stata autorizzata inizialmente.

L’oggetto $facebook diventa l’interfaccia verso la piattaforma, la quale viene interrogata tramite le varie funzioni in PHP5 (ad oggetti).

I tag che inziano con <fb: sono i tag FBML di cui parlavo prima: essi verranno interpretati da Facebook e diventeranno, in questo caso, dei collegamenti ai profili specificati nell’attributo uid. Il particolare il primo diventerà un link al profilo dell’utente dell’applicazione ($user_id) e l’altro sarà un link al profilo di uno degli amici ($friend).

Per iniziare può bastare quanto detto finora, ma l’appetito vien mangiando… le possibilità sono infinite!

Per esempio utilizzando la seguente chiamata

$facebook→api_client→call_method(“facebook.status.get”,
array(‘uid’=>$user_id, ‘limit’=>10));

ho ottenuto tutto il necessario per realizzare sul mio sito la parte del modulo Social Networks relativa a Facebook (beh… in realtà ho dovuto realizzare un wrapper RSS perchè il sito è in Ruby On Rails, mentre la libreria è in PHP).

Buon divertimento! :)


  • Currently 3/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
raffaele @ July 26, 2009 23:21

NOn funziona :-( copiato/incollato, sostituito le api key e api secret…

scrive solo ciao e appare il primo pallino dell’elenco puntato :-(

Bruno @ July 27, 2009 11:00

Ciao raffaele… non so se l’hai già fatto, ma prima di poter utilizzare lo script (che deve essere pubblicato su un tuo spazio web) devi modificare le impostazioni dell’applicazione dall’interfaccia di Facebook, per farla puntare allo script in questione.


Si fa dalla pagina http://www.facebook.com/developers, poi clicchi sulla tua applicazione nel menù a destra, Modifica Impostazioni, e poi cliccando su Modelli (a sinistra) devi inserire l’URL dello script PHP nel campo Canvas Callback URL.


Ah, ovviamente devi avere estratto le librerie API di facebook nella cartella ./client, come indicato nel codice PHP.

ignazio @ August 21, 2009 19:24

mmm.. non sembra funzionare neanche a me.

copia-incolla, sostituite le apikey con quelle fornite da facebook, caricato il file php sul mio spazio insieme alla libreria ufficiale scaricata da facebook (ma perchè la cartella “client”?)ma non funzia.

Bruno @ August 23, 2009 14:59

“non funziona” non è un’espressione molto utile… COSA non funziona? QUALE ERRORE viene visualizzato?

Quel codice che ho scritto presuppone che nella sotto-directory ./client siano estratte le librerie API scaricate da Facebook, in modo che in questa directory sia presente appunto il file facebook.php e tutti gli altri file delle API (in pratica sarebbe il contenuto della directory facebook-platform/php all’interno dell’archivio facebook-platform.tar.gz).


E’ ovvio che per utilizzare l’applicazione è necessario accedervi tramite Facebook (tramite l’URL configurato nelle impostazione dell’applicazione, del tipo http://apps.facebook.com/nomeapplicazione), e NON dirigendo il browser direttamente sul server esterno.

Emanuele @ November 10, 2009 20:16

Ciao, grazie per il post a me funziona ( ho importato gli ultmin 10 post nel mio sito) però funziona solo se sono loggato altrimenti mi appare questo errore.

“Session key invalid or no longer valid”.

Posso importare i post anche se non sono loggato su facebook?

Grazie

Bruno @ November 11, 2009 14:45

Ciao Emanuele,

quella che vuoi realizzare è un altro tipo di applicazione, detta “desktop application”.


Si istanzia con:

$facebook = new FacebookDesktop($appapikey, $appsecret);


C’è poca documentazione a riguardo, ma se leggi il codice delle API vedi che c’è il modo di memorizzare la chiave di sessione ed utilizzare sempre la stessa anche quando non sei loggato.

Name


Email


Website/Blog


Add comment