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 3.339 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 creare Dialog Box nelle tue Applicazioni Facebook IFrame

Come creare Dialog Box nelle tue Applicazioni Facebook IFrame

Uno degli aspetti positivi nello sviluppare Applicazioni Facebook FBML è che puoi usare FBJS, che mette a disposizione alcuni oggetti molto comodi come le Dialog. Grazie ad esse possiamo far comparire i classici popup in stile Facebook, con una riga di codice. Passando, però, a sviluppare Applicazioni IFRAME — e pare che Facebook stia ...
Una classe PHP per creare applicazioni Facebook

Una classe PHP per creare applicazioni Facebook

Eccoci finalmente giunti alla seconda guida che vi insegnerà come creare un'applicazione Facebook. Nella prima guida abbiamo imparato come impostare Facebook Developer per riconoscere la nostra nuova applicazione, oggi vedremo il codice vero e proprio. Volevo iniziare direttamente con un esempio pratico di applicazione, ma mi sono accorto che prima è necessario che vi ...
6 Generatori di Applicazioni Facebook

6 Generatori di Applicazioni Facebook

Abbiamo parlato spesso di Applicazioni Facebook e vi ho illustrato numerose guide tecniche per sviluppare da zero un'Applicazione. Tuttavia, non siete certo tutti programmatori e potreste avere diverse difficoltà. Vi vengo incontro nuovamente: se avete sempre desiderato creare una vostra Applicazione Facebook, ma non ne avete le capacità, ecco finalmente quello che fa per ...
Facebook Paginator: creare una paginazione in stile Facebook

Facebook Paginator: creare una paginazione in stile Facebook

Ti è capitato di sviluppare Applicazioni Facebook dove devi mostrare lunghe serie di dati? Magari hai la tabella con tutti gli utenti iscritti, ma non puoi mostrare 10.000 record tutti sulla stessa pagina! Ecco che allora tornerebbe utile un sistema di paginazione che divida i vari record su più pagine, facilmente navigabili. Perchè allora non ...
Cosa significa la mail di Facebook "Notice of Violation: Privacy Policy"?

Cosa significa la mail di Facebook “Notice of Violation: Privacy Policy”?

Oggi, come tanti altri sviluppatori Facebook, ho ricevuto una mail da Facebook con un oggetto piuttosto minaccioso: "Notice of Violation: Privacy Policy". Il testo della mail recita: Hi, We've found the following policy violation with your app and you need to address this issue by Tuesday April 17, 2012 at 5:00pm PST or your app may be ...

131 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