2009-08-27 5 views
5

Diciamo che possiedo/controllo una pagina Facebook in cui vengono pubblicati gli eventi. Mi piacerebbe visualizzare questi eventi su un altro sito Web (nel mio caso, un blog WordPress, ma non è la parte importante) in una pagina "Prossimi eventi".Accesso esterno agli eventi di Facebook

Ciò di cui non sono sicuro è: l'API di Facebook è utilizzabile "esternamente" come questo? Ho scaricato la libreria PHP e ho un'applicazione demo funzionante che funziona da Facebook (ad esempio l'emissione di FBML che facebook.com interpreta e visualizza all'utente collegato), ma nel mio caso voglio una terza parte (mia web server) per interrogare Facebook ogni tanto, piuttosto che i visitatori del sito che richiedono direttamente dati (HTML/JSON/etc.) da Facebook stesso.

Questo tipo di cose è possibile con l'API di Facebook? Come si autenticherà il mio server web? Quali informazioni devo conservare?

Nota: sto cercando informazioni più a livello concettuale a "diagramma di sequenza", non solo a chiedere codice. Quella parte posso capire me stesso. ;) Sfortunatamente, Google e la wiki dello sviluppatore FB non sono stati del tutto disponibili. Cosa devo sapere per poter iniziare a programmare?

+0

Ciao, mi chiedevo se avessi avuto fortuna con questo, sto cercando di implementare una versione semplice simile alla tua ed ero curioso di sapere quale metodo hai usato. Grazie! –

risposta

5

Questa è una panoramica di base di come ho fatto per alcuni dei miei clienti che volevano una funzionalità simile:

  1. Creare un'applicazione piuttosto semplice che richiede Extended permissions, in particolare "offline_access" e quant'altro è necessario
  2. Conservare il conseguente Session Key nel database con l'UID
  3. Creare un sistema sicuro, webservice autenticato per la vostra applicazione, che consente di ottenere le informazioni necessarie per un UID che si fornisce, con la sessione che hai memorizzato nel tuo database
  4. Sul sito web effettuare richieste al servizio web della tua app, avendo cura di memorizzare nella cache i risultati per un certo periodo di tempo e solo fare una nuova richiesta al tuo webservice una volta scaduta la cache (io uso 5-10 minuti per la maggior parte dei miei

Quindi in pratica la tua app di Facebook funziona come un proxy tra il sito Web e l'utente, eseguendo tutte le operazioni di autenticazione e richiesta utilizzando mezzi legittimi.

Ho usato un servizio web perché volevo solo mantenere una app di Facebook per le esigenze di più client. Funziona in questo modo (in un diagramma ASCII art non molto impressionante):

Facebook User 1 \     /Client Website 1 
Facebook User 2 --- Facebook App --- Client Website 2 
Facebook User 3/     \ Client Website 3

Nota: ho fatto solo questo per gli utenti, non pagine, così il vostro chilometraggio può variare.

+0

è il webservice che aggiunge molto valore in questa configurazione? – klochner

+1

Nel mio caso ho utilizzato un servizio web perché ho più client che utilizzano l'unica app di Facebook e i siti web di quegli stessi clienti che parlano all'app Facebook per visualizzare i dati sui propri siti. Se il sito web e l'app fossero uno nella stessa, potresti eliminare il bit del servizio web. Come ho detto nella mia risposta, questa è solo la mia configurazione. Brant potrebbe fare qualcosa di simile ed eliminare i bit che non richiede. –

+0

grazie, solo curioso - pensavo che potresti vedere alcuni miglioramenti di velocità memorizzandoli nella cache localmente con il webservice, ma sembra una grande complessità aggiunta se non stai tracciando molti dati. – klochner

3

AFAIK a parte le informazioni utente, non è possibile scaricare alcun altro dato da Facebook.

Ma puoi provarlo in un altro modo, ad esempio crea un'app che memorizzi eventi e altre informazioni pertinenti su un server web e che l'altro sito Web possa accedere facilmente a tali informazioni.

3

È possibile eseguire Events.get con l'API di Facebook, quindi fornire l'ID pagina/profilo per il quale si desidera ottenere gli eventi. A seconda di come è impostata la pagina, potrebbe essere necessario autenticarsi, utilizzare semplicemente il proprio account Facebook, poiché si dovrebbe avere accesso a tutti gli eventi. oh e assicurati di fare un sacco di cache in modo da non colpire Facebook su ogni pagina caricata.