BigThink

Una Classe PHP per Applicazioni Facebook IFrame con Graph API

Oggi voglio farti un regalo che spero apprezzerai: ho deciso di condividere la Classe PHP che uso per sviluppare le mie Applicazioni Facebook.

Grazie ad essa potrai creare un’App in pochissimo tempo, perchè contiene già tutta la struttura necessaria per il login e le chiamate API.

La Classe utilizza le nuove Graph API ed è pensata per le Applicazioni IFrame, visto che pare che Facebook stia spingendo in quella direzione, rendendo deprecate quelle FBML.

Ma vediamo ora come installare e configurare il tutto.

1. Crea l’Applicazione

Questo è un passo che ho già spiegato decine di volte, ma lo ripeto nuovamente per completezza:

  • Vai alla pagina di creazione dell’applicazione.
  • Inserisci il nome e accetta le condizioni. Quindi procedi.
  • Vai sul tab “Web Site”.
  • Inserisci la “Site URL”, ovvero l’URL del dominio principale (es: http://www.miosito.it/).
  • Clicca sul tab “Facebook Integration”.
  • Inserisci la “Canvas Page”, che sarà l’indirizzo della tua App.
  • Inserisci la “Canvas URL”, ovvero l’URL della cartella sul tuo server (es: http://www.miosito.it/facebookapp/).
  • Assicurati che “Canvas Type” sia IFrame.
  • Imposta “Dimensione dell’IFrame” su “Auto-resize”.
  • Salva le modifiche.

2. Scarica la Classe

Scarica lo zip che contiene la Classe ed il resto dell’ambiente di sviluppo da me strutturato:

Facebook Graph API Class 1.2  Facebook Graph API Class 1.2 (11,5 KiB) - scaricato 2.632 volte

Scompatta lo zip e uploada i file sul tuo server.

3. Configura l’Applicazione

Il file config.php permette la configurazione di tutti i parametri necessari al funzionamento:

  • APP_ID: l’ID della tua Applicazione.
  • API_KEY: la “Chiave API”.
  • SECRET: il valore di “Applicazione nascosta”.
  • APP_NAME: il nome della tua App.
  • URL: l’indirizzo pubblico della tua applicazione (ovvero la “Canvas Page”).
  • MY_URL: l’indirizzo della cartella sul tuo server (la “Canvas URL”).

A questo punto non ti resta che uploadare il file config.php sul server ed andare sulla tua Applicazione!

4. Com’è strutturato l’ambiente

I file che troverai nello zip sono:

  • commons.php: questo file va incluso in ogni pagina della tua Applicazione. Si occupa di importare tutte le librerie e di instanziare l’oggetto Facebook.
  • config.php: abbiamo già visto che permette di configurare i parametri.
  • index.php: è la home della tua App. In questo caso fa delle chiamate per dimostrare il funzionamento della Classe.
  • header.php: è l’intestazione della pagina. Contiene l’instanziazione dell’oggetto Facebook lato client.
  • footer.php: il footer delle pagine. Puoi personalizzarlo come preferisci, ad esempio con i tuoi credits.
  • style.css: il foglio di stile.
  • lib/facebook.php: la più recente versione della nuova PHP SDK.
  • lib/FB.class.php: la mia classe, che ora vedremo nel dettaglio.

5. Come utilizzare la Classe

Basta guardare l’esempio per capire come utilizzarla, ma vediamo comunque insieme i metodi base.

Instanziare la Classe

La seguente riga di codice crea l’oggetto Facebook e gestisce da sola tutta la procedura di autenticazione. E’ possibile passare come parametro una stringa contenente i permessi che si desidera richiedere all’utente in fase di accesso all’Applicazione.

$fb = new FB('publish_stream,email');

Ottenere l’ID dell’utente

$uid = $fb->getUserId();

Ottenere informazioni sull’Utente

Se non si passa alcun parametro, verrà restituito un array con le info dell’utente corrente:

$info = $fb->getUserInfo();

Altrimenti possiamo richiedere le info su un utente specifico:

$friendInfo = $fb->getUserInfo(537461288);

Ottenere la lista degli amici

$friends = $fb->getFriends(4);

Se gli passimo un attributo, quello sarà il limite massimo di amici da restituire.

Verificare se un utente è Fan di una Pagina

if($fb->isFan('33933529842')){
    echo "Sei fan";
}

Aggiornare lo stato

Se inserisci solo il messaggio, verrà pubblicato sulla tua Bacheca:

$fb->updateStatus("Studio le Graph API");

Altrimenti puoi impostare l’ID dell’utente o Pagina su cui postare:

$fb->updateStatus("Studio le Graph API", 537461288);

Pubblicare un allegato in Bacheca

$fb->streamPublish("Una classe per Facebok",
                   "http://www.bigthink.it/classe-php-applicazioni-facebook-graph-api",
                   "Interessante!",
                   "http://www.bigthink.it/images/thumb.jpg");

Queste sono solo alcune delle funzionalità che Facebook mette a disposizione degli sviluppatori. Ovviamente puoi aggiungere ulteriori metodi, in base alle tue esigenze.

6. Un Fix per Internet Explorer

La mia prima Applicazione creata con questa Classe andava perfettamente se aperta con Firefox, ma con IE dava un sacco di problemi. Continuava a fare redirect assurdi tra una pagina e l’altra.

Cercando online ho poi scoperto che era un problema di Cookies: trovandosi all’interno di un IFrame, i Cookies di Facebook non venivano salvati, non permettendo così il salvataggio della Sessione.

La soluzione è molto semplice, basta inserire questa linea di codice in testa a tutte le Pagine della tua App:

header('P3P: CP="CAO PSA OUR"');

Se hai scaricato il mio ambiente di sviluppo, la trovi già inserita nel file commons.php, che va comunque incluso in tutte le pagine.

Per approfondimenti ti rimando a questi articoli, ai quali mi sono ispirato per la creazione della Classe:

UPDATE 22/9/2010

  • Ho aggiornato l’articolo, sistemando secondo la nuova interfaccia di creazione dell’Applicazione.
  • Ho aggiornato la classe alla versione 1.1, sistemando alcune piccole cose e sostituendo la vecchia SDK con la nuova versione.

UPDATE 27/11/2010

  • Aggiornato la classe alla versione 1.2: aggiunto parametro “next” e corretto un piccolo errore.

Articolo scritto da Ghido

Fondatore di BigThink.it, si occupa dello sviluppo e del coordinamento dei progetti tecnologici. Specializzato nel Marketing su Facebook e nello sviluppo di Applicazioni Social, fa consulenza e formazione ad aziende ed agenzie.

Leggi anche...

Come sviluppare Applicazioni Facebook in locale

Come sviluppare Applicazioni Facebook in locale

Uno dei principali problemi che si riscontrano nello sviluppare Applicazioni Facebook — in particolare quelle FBML - è l'impossibilità di testarle in locale. Uno sviluppatore alle prime armi cosa fa? Inizia a creare la sua Applicazione direttamente sul server remoto, uploadando i file via FTP ad ogni singola modifica. Un vero suicidio! E' impossibile ...
Hosting gratuito per le tue Applicazioni Facebook!

Hosting gratuito per le tue Applicazioni Facebook!

La principale preoccupazione di chi sviluppa Applicazioni Facebook è quella di trovare un buon server che possa gestire tutte le richieste, sopportare il traffico ed essere scalabile. Il problema è che un server costa e, se ci stiamo avvicinando al mondo della programmazione Facebook per la prima volta, sarebbe utile avere uno spazio di ...
Leggi, guarda, compra... L'evoluzione del Facebook Like!

Leggi, guarda, compra… L’evoluzione del Facebook Like!

Facebook è cambiato. Se nell'Aprile 2010 il buon Zuck aveva lanciato l'ormai famoso Like Button, pochi giorni fa ha davvero deciso di rivoluzionare il modo di relazionarsi su Facebook. Prima, l'unico modo per connettersi con un oggetto dell'Open Graph era mediante l'azione di Like: cliccando sul pulsante Mi piace, creavo una connessione tra me ...
Creare il layout di un’applicazione Facebook con FBML

Creare il layout di un’applicazione Facebook con FBML

Oggi vedremo la terza parte della guida alla creazione di applicazioni Facebook, concentrandoci in particolar modo sul codice FBML. Se vi siete persi le prime due parti, rimediate subito: Creare un’applicazione Facebook: le impostazioni Una classe PHP per creare applicazioni Facebook Il codice FBML è un'estensione dell'HTML che permette di costruire il layout della nostra applicazione e ...
Facebook: come intercettare i click sul Like Button

Facebook: come intercettare i click sul Like Button

Abbiamo già visto molti dei pregi del nuovo Like Button, ma forse non sai che è possibile farne un uso molto più avanzato. Immagina, ad esempio, di avere un elenco di prodotti con associato ad ognuno un Pulsante Mi piace. Come potresti creare una classifica, ordinata in base al numero di apprezzamenti? O magari vorresti ...

120 Commenti

  1. sancora

    Ciao, ottimo lavoro.
    Per caso in tutti questi mesi c’e’ una versione con piu’ funzioni? Per esempio mi interessava postare su pagine da fan. Come dovrei fare?
    Grazie

    10 ottobre 2011, 14:52
  2. Matteo

    Ricevo il seguente errore

    To fix this error, please set your Canvas Callback URL in the application settings editor. Once it has been set, users will be redirect to that URL instead of this page after logging in.

    Come faccio a dare una Canvas Callback?

    4 settembre 2011, 15:09
  3. beppe

    Ciao Ghido,
    grazie per questa preziosa guida,

    ti chiedo aiuto per un piccolo problema, testando la funzione “$fb->updateStatus(“Studio le Graph API”);” (aggiungendola al file index.php) capita che la bacheca dell’utente si riempie di post, cioè ne viene pubblicato uno ogni 4-5 secondi. Come posso risolvere? grazie

    ciao

    8 giugno 2011, 14:21
  4. Alberto

    Ciao! ho provato ad installare ieri l’applicazione di prova…..
    all’inizio tutto ok….

    Senza modificare nulla, ma solo cambiando il nome dell’applicazione e la cartella dove è salvata sul mio sito, accade questo:

    Prime due informazioni:
    Name: ora si vede “YOU” ( e quindi non il mio nome)
    Email: VUOTO

    sapresti dirmi il motivo?
    grazie.

    ulteriore domanda….se io volessi aggiungere anche la foto degli amici nella “stampa” dell’array….come potrei fare?

    27 maggio 2011, 14:32
  5. Ho utilizzato la tua classe per fare la mia applicazione. Serve per cercare i link postati su facebook http://apps.facebook.com/thelinkfinder cosa ne pensi?

    17 maggio 2011, 22:41
  6. Diego

    Salve ragazzi,

    ho configurato tutto con i miei dati della app, ma mi da qwesto errore :

    Parse error: syntax error, unexpected ‘{‘ in /membri/geistad/facebook/myapp/commons.php on line 9

    any ideas?

    9 maggio 2011, 17:31
  7. Daniele

    Capita anche a me la storia del refresh con le vecchie applicazione sviluppate con la versione 1.0. Adesso ho scaricato quella nuova, sostituito i file e configurato tutto perfettamente ma non va, anche cambiando togliendo gli / sia in URL che in MY_URL. Qualcuno ha trovato il modo di risolvere?

    30 aprile 2011, 22:42
    • Daniele

      Ho trovato il modo. Basta cambiare ed aggiungere un permesso che l’app deve richiedere e si risolve il problema!

      1 maggio 2011, 20:53
      • che permesso bisogna chiedere puoi postare il pezzo di codice da modificare?

        2 maggio 2011, 07:19
  8. Ciao, ho seguito le tue istruzioni e ho impostato il config.php con i miei dati, l’unico problema è che quando clicco sul pulsante del login mi fa uscire solo un icona di facebook e un indirizzo a facebook, ma niente di tutto ciò che sta nell’index.php, come mai?

    javier

    14 aprile 2011, 10:16
  9. spider

    Ciao Ghido,
    Vorrei chiederti un consiglio. Se volessi inserire un bottone per invitare gli amici, come devo procedere?
    (naturalmente non ti sto chiedendo tutto il codice, solo qualche indizio, cosa devo studiarmi) Grazie

    12 aprile 2011, 21:27
  10. per il problema con IE và bene anche così?

    13 marzo 2011, 19:20

12 Citazioni