SlideShare uma empresa Scribd logo
1 de 30
Programmazione avanzata
di Facebook
Angelo Iacubino
Dipartimento Informatica - Università dell’Insubria - Como
www.disinformatica.com email: webmaster@disinformatica.com
www.facebook.com/disinformatica

Roberto Marmo
Facoltà di Ingegneria Università di Pavia, Facoltà di Scienze
MM.FF.NN. Università dellʼInsubria-Como
www.robertomarmo.net email: info@robertomarmo.net
www.facebook.com/robertomarmo
Application Programming
Interfaces
 ▪   metodologia standard di chiamate alle funzioni
 ▪   PHP come linguaggio ufficialmente supportato
 ▪   Client Library
Come effettuare le chiamate alle
funzioni di FB
Un primo esempio.....
Amici & Eventi
un esempio con utilizzo della chiamata events_get consente di
ottenere i seguenti risultati:

• recupera la lista di amici dell’utente corrente;
• memorizza lo user_id del secondo amico della lista;
• cerca tutti gli eventi associati al suddetto user_id;
• visualizza la lista dei partecipanti al terzo evento presente nella
lista degli eventi, suddivisa per “partecipanti”, “insicuri” o “in
forse”
Amici & Eventi (2)
$eventi = $Facebook->api_client->events_get($secondoamico,
                                                          null,
null,
null, null);
echo
 "<ul>";
$i =
 1;
if
   ($eventi)
   {

     
    
       foreach
   ($eventi
      as
   $evento)
    {

     
    
       
     
    
        if
   ($i == 3)
   $terzoevento=$evento['eid'];

     
    
       
     
    
        echo
 "<li>{$evento['name']}
 - luogo {$evento['location']}</li>";

     
    
       
     
    
        $i++; }
    
      

     
    
       $i--; echo
"Questo
    tuo
 amico
ha
    ben "
. $i
 . " eventi!<br>";

     
    
       $ev1
 = $Facebook->api_client->events_get(null,
     $terzoevento,
 null,
 null,
 null);

     
    
       echo
 "Gli utenti
che partecipano al terzo evento con id " .
$terzoevento
 . " e nome {$ev1[0]['name']}
                                                                                                                          sono:<br><br>";

     
    
       $membri = $Facebook->api_client->events_getMembers($terzoevento);

     
    
       echo
 "<p>Attesi</p>";    echo
 "<ul>";

     
    
       if
   ($membri['attending'][0])
       {

     
    
       
     
    
        foreach ($membri['attending'] as $membro)
 {

     
    
       
     
    
        
     
     
      
     echo
 "<li><fb:name
uid="$membro" useyou="false"
         /></li>"; }

     
    
       }
    else
 {    echo
    "....non
    ce
   ne
    sono"; }

     
    
       echo
 "</ul>"; echo
      "<p>...
     in
   forse:</p>"; echo
    "<ul>";

     
    
       if
   ($membri['unsure'][0])
 {

     
    
       
     
    
        foreach ($membri['unsure'] as $membro)
        {

     
    
       
     
    
        
     
     
      echo
 "<li><fb:name uid="$membro" useyou="false"
 /></li>"; }

     
    
       }
    else
 { echo
....non
                                     "             ce
    ne
   sono"; }

     
    
       echo
 "</ul>"; echo
      "<p>Insicuri:</p>"; echo
      "<ul>";

     
    
       if
   ($membri['not_replied'][0])
 {

     
    
       
     
    
        foreach
    ($membri['not_replied']
                                                                          as
         $membro)
        {

     
    
       
     
    
              echo
 "<li><fb:name uid="$membro" useyou="false"
            /></li>"; }

     
    
       }
    else
 { echo
....non
                                     "             ce
    ne
   sono"; }

     
    
       echo
 "</ul>";
}
    else
 {

     
    
       echo
 "<li>non
     ci
   sono
 eventi
      per
   questo
        tuo
      amico</li>"; } echo
   "</ul>";
groups.getMembers
users.getInfo
friends.getAppUsers
SQL vs FQL
Alcuni esempi...
Alcuni esempi...(2): tabelle di FB
indexable
field
FQL
FQL
FQL
FQL
FQL
Oltre il PHP...
Oltre il
PHP...
Tempi di attesa e Server Tuning (1)
• ridurre il numero di chiamate al server usando FQL al posto di API;
• nel caso occorrano molte chiamate API allo stesso momento, usare metodi batch.run per
combinare al massimo 20 operazioni in una singola richiesta, come specificato nella wiki
ufficiale;
• usare canvas realizzati con FBML, visualizzati più velocemente delle pagine iframe;
• spostare pezzi di codice scritti in JavaScript o CSS in file esterni, da importare nella pagina
per velocizzarne il caricamento. la piattaforma memorizza i file alla prima occasione d’uso e li
conserva per richieste successive con un meccanismo chiamato cache;
• usare il tag fb:ref per pubblicare lo stesso codice FBML verso tantissimi profili senza dover
ripubblicare il codice per ogni utente. Come nel caso precedente, la piattaforma usa il
meccanismo di cache;
• friends.get restituisce lo user_id dell’utente attuale. In genere la funzione viene chiamata in
varie parti del codice; conviene invece chiamarla durante il processo iniziale di caricamento;
• dovendo caricare numerose immagini o righe di dati molto lunghe, conviene dividere le
informazioni in pagine successive più leggere;
• se si decide di usare AJAX per aggiornare il contenuto delle pagine senza doverle ricaricare
per intero, limitare l’azione di aggiornamento solo a porzioni piccole della pagina.
Tempi di attesa e Server Tuning (2)
Tempi di attesa e Server Tuning (3)
Tempi di attesa e Server Tuning (4)
La Conoscenza (1)
La Conoscenza (2)
La Conoscenza (3)
Grazie per l’attenzione
 Domande?

Angelo Iacubino

www.disinformatica.com
webmaster@disinformatica.com
www.facebook.com/disinformatica

Roberto Marmo

www.robertomarmo.net
info@robertomarmo.net
www.facebook.com/robertomarmo
(c) 2009 Facebook, Inc. or its licensors.  "Facebook" is a registered trademark of Facebook, Inc.. All rights reserved. 1.0

Mais conteúdo relacionado

Destaque

2015 Updated Docx
2015 Updated Docx2015 Updated Docx
2015 Updated Docx
Gwen Modert
 
Presentación1lo
Presentación1loPresentación1lo
Presentación1lo
lbayonaa
 
«использование коррегирующей гимнастики в режимных моментах, как фактор укреп...
«использование коррегирующей гимнастики в режимных моментах, как фактор укреп...«использование коррегирующей гимнастики в режимных моментах, как фактор укреп...
«использование коррегирующей гимнастики в режимных моментах, как фактор укреп...
aviamed
 
проект неделя здоровья
проект неделя здоровьяпроект неделя здоровья
проект неделя здоровья
aviamed
 
93613757 how-to-teach
93613757 how-to-teach93613757 how-to-teach
93613757 how-to-teach
Edgar Sanchez
 
FINAL REVISIONS MS THESIS
FINAL REVISIONS MS THESISFINAL REVISIONS MS THESIS
FINAL REVISIONS MS THESIS
Tom Hajek
 
Maslenica
MaslenicaMaslenica
Maslenica
aviamed
 

Destaque (17)

2015 Updated Docx
2015 Updated Docx2015 Updated Docx
2015 Updated Docx
 
Presentación1lo
Presentación1loPresentación1lo
Presentación1lo
 
Precentacion power poin
Precentacion power poinPrecentacion power poin
Precentacion power poin
 
«использование коррегирующей гимнастики в режимных моментах, как фактор укреп...
«использование коррегирующей гимнастики в режимных моментах, как фактор укреп...«использование коррегирующей гимнастики в режимных моментах, как фактор укреп...
«использование коррегирующей гимнастики в режимных моментах, как фактор укреп...
 
проект неделя здоровья
проект неделя здоровьяпроект неделя здоровья
проект неделя здоровья
 
Rbm training powerpoint presentation
Rbm training powerpoint presentationRbm training powerpoint presentation
Rbm training powerpoint presentation
 
Pink Floyd
Pink FloydPink Floyd
Pink Floyd
 
La magia de nuestros sentidos
La magia de nuestros  sentidosLa magia de nuestros  sentidos
La magia de nuestros sentidos
 
La Sicurezza delle Informazioni nel Web 2.0
La Sicurezza delle Informazioni nel Web 2.0La Sicurezza delle Informazioni nel Web 2.0
La Sicurezza delle Informazioni nel Web 2.0
 
93613757 how-to-teach
93613757 how-to-teach93613757 how-to-teach
93613757 how-to-teach
 
FINAL REVISIONS MS THESIS
FINAL REVISIONS MS THESISFINAL REVISIONS MS THESIS
FINAL REVISIONS MS THESIS
 
Scaphoid fractures and non union
Scaphoid fractures and non unionScaphoid fractures and non union
Scaphoid fractures and non union
 
Sectional Anatomy of the Brain Stem
Sectional Anatomy of the Brain StemSectional Anatomy of the Brain Stem
Sectional Anatomy of the Brain Stem
 
Ch fichas
Ch fichasCh fichas
Ch fichas
 
бунин цифры
бунин цифрыбунин цифры
бунин цифры
 
Maslenica
MaslenicaMaslenica
Maslenica
 
Invierno
Invierno Invierno
Invierno
 

Último

Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxScienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
lorenzodemidio01
 
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
lorenzodemidio01
 
case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....
giorgiadeascaniis59
 

Último (18)

Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxLorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
 
Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................
 
descrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptxdescrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptx
 
Quadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceoQuadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceo
 
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxScienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
 
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxLorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
 
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
 
discorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptxdiscorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptx
 
case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....
 
Aristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptxAristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptx
 
Descrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxDescrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptx
 
Presentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione CivicaPresentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione Civica
 
Lorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxLorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptx
 
Tosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxTosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptx
 
Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.
 
LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................
 
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxLorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
 
Scrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileScrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibile
 

Facebook Developer Garage Venice 2 parte

  • 1.
  • 2. Programmazione avanzata di Facebook Angelo Iacubino Dipartimento Informatica - Università dell’Insubria - Como www.disinformatica.com email: webmaster@disinformatica.com www.facebook.com/disinformatica Roberto Marmo Facoltà di Ingegneria Università di Pavia, Facoltà di Scienze MM.FF.NN. Università dellʼInsubria-Como www.robertomarmo.net email: info@robertomarmo.net www.facebook.com/robertomarmo
  • 3. Application Programming Interfaces ▪ metodologia standard di chiamate alle funzioni ▪ PHP come linguaggio ufficialmente supportato ▪ Client Library
  • 4. Come effettuare le chiamate alle funzioni di FB
  • 6. Amici & Eventi un esempio con utilizzo della chiamata events_get consente di ottenere i seguenti risultati: • recupera la lista di amici dell’utente corrente; • memorizza lo user_id del secondo amico della lista; • cerca tutti gli eventi associati al suddetto user_id; • visualizza la lista dei partecipanti al terzo evento presente nella lista degli eventi, suddivisa per “partecipanti”, “insicuri” o “in forse”
  • 7. Amici & Eventi (2) $eventi = $Facebook->api_client->events_get($secondoamico, null, null, null, null); echo "<ul>"; $i = 1; if ($eventi) { foreach ($eventi as $evento) { if ($i == 3) $terzoevento=$evento['eid']; echo "<li>{$evento['name']} - luogo {$evento['location']}</li>"; $i++; } $i--; echo "Questo tuo amico ha ben " . $i . " eventi!<br>"; $ev1 = $Facebook->api_client->events_get(null, $terzoevento, null, null, null); echo "Gli utenti che partecipano al terzo evento con id " . $terzoevento . " e nome {$ev1[0]['name']} sono:<br><br>"; $membri = $Facebook->api_client->events_getMembers($terzoevento); echo "<p>Attesi</p>"; echo "<ul>"; if ($membri['attending'][0]) { foreach ($membri['attending'] as $membro) { echo "<li><fb:name uid="$membro" useyou="false" /></li>"; } } else { echo "....non ce ne sono"; } echo "</ul>"; echo "<p>... in forse:</p>"; echo "<ul>"; if ($membri['unsure'][0]) { foreach ($membri['unsure'] as $membro) { echo "<li><fb:name uid="$membro" useyou="false" /></li>"; } } else { echo ....non " ce ne sono"; } echo "</ul>"; echo "<p>Insicuri:</p>"; echo "<ul>"; if ($membri['not_replied'][0]) { foreach ($membri['not_replied'] as $membro) { echo "<li><fb:name uid="$membro" useyou="false" /></li>"; } } else { echo ....non " ce ne sono"; } echo "</ul>"; } else { echo "<li>non ci sono eventi per questo tuo amico</li>"; } echo "</ul>";
  • 15. FQL
  • 16. FQL
  • 17. FQL
  • 18. FQL
  • 19. FQL
  • 22. Tempi di attesa e Server Tuning (1) • ridurre il numero di chiamate al server usando FQL al posto di API; • nel caso occorrano molte chiamate API allo stesso momento, usare metodi batch.run per combinare al massimo 20 operazioni in una singola richiesta, come specificato nella wiki ufficiale; • usare canvas realizzati con FBML, visualizzati più velocemente delle pagine iframe; • spostare pezzi di codice scritti in JavaScript o CSS in file esterni, da importare nella pagina per velocizzarne il caricamento. la piattaforma memorizza i file alla prima occasione d’uso e li conserva per richieste successive con un meccanismo chiamato cache; • usare il tag fb:ref per pubblicare lo stesso codice FBML verso tantissimi profili senza dover ripubblicare il codice per ogni utente. Come nel caso precedente, la piattaforma usa il meccanismo di cache; • friends.get restituisce lo user_id dell’utente attuale. In genere la funzione viene chiamata in varie parti del codice; conviene invece chiamarla durante il processo iniziale di caricamento; • dovendo caricare numerose immagini o righe di dati molto lunghe, conviene dividere le informazioni in pagine successive più leggere; • se si decide di usare AJAX per aggiornare il contenuto delle pagine senza doverle ricaricare per intero, limitare l’azione di aggiornamento solo a porzioni piccole della pagina.
  • 23. Tempi di attesa e Server Tuning (2)
  • 24. Tempi di attesa e Server Tuning (3)
  • 25. Tempi di attesa e Server Tuning (4)
  • 29. Grazie per l’attenzione Domande? Angelo Iacubino www.disinformatica.com webmaster@disinformatica.com www.facebook.com/disinformatica Roberto Marmo www.robertomarmo.net info@robertomarmo.net www.facebook.com/robertomarmo
  • 30. (c) 2009 Facebook, Inc. or its licensors.  "Facebook" is a registered trademark of Facebook, Inc.. All rights reserved. 1.0