Facebook, il celeberrimo social network, è sempre più considerato un ottimo strumento per promuovere le proprie attività ed incrementare il proprio business.
Il sito si basa su una piattaforma composta da cinque componenti: un linguaggio di markup derivato da HTML e battezzato, appunto, Facebook Markup Language, una API REST per la gestione delle comuncazioni tra i server di Facebook e le applicazioni eventualmente sviluppate in proprio, un linguaggio “SQL-like” (Facebook Query Language) che facilita l’interazione con le basi di dati gestite sui server dell’azienda fondata da Mark Zuckerberg, un linguaggio di scripting (Facebook JavaScript) ed un insieme di librerie impiegabili con i vari linguaggi di programmazione.
Le librerie di programmazione che Facebook offre gratuitamente, sono disponibili sul sito “wiki” dedicato agli sviluppatori e raggiungibile cliccando qui. Tra le librerie ufficialmente supportate vi sono quelle per PHP e Java ma esistono anche quelle per molti altri linguaggi.
Nell’esempio che segue cercheremo di risolvere un problema comune a molti webmaster: mettere a punto una semplice metodologia per caricare dei contenuti all’interno di una pagina creata su Facebook. Sebbene la procedura illustrata effettui il “posting” di testi e link su una pagina Facebook, è bene premettere come il medesimo approccio possa essere impiegato anche per pubblicare dei contenuti sul profilo di un utente del social network.
Per iniziare è necessario, ovviamente, disporre di un account Facebook valido e, nel nostro caso, di una pagina creata ed amministrata sul social network.
Il secondo requisito consiste nella disponibilità di un server web in grado di eseguire script PHP (è il linguaggio di scripting che utilizzeremo per il nostro esempio).
Il file è compresso in formato TAR: ciò significa che per aprirlo in ambiente Windows si dovrà ricorrere ad un’utilità freeware come IzArc o similare (va bene anche 7-Zip).
, contenuta nel file compresso.
Le librerie PHP, ufficialmente supportate da Facebook, si faranno carico di gestire le chiamate REST. Con l’acronimo REST (Representational State Transfer) ci si riferisce ad un insieme di principi utilizzati per descrivere semplici interfacce che trasmettono dati ricorrendo al protocollo HTTP senza usare livelli opzionali (SOAP) o gestione delle sessioni mediante cookies.
e confermare l’aggiunta dell’applicazione.
Da qui, cliccando sul pulsante Set up new application si dovrà creare una nuova applicazione.
La procedura è molto semplice: nella sezione Basic si dovrà assegnare un nome all’applicazione in procinto di essere sviluppata (campo Application name). Si tenga presente che si tratta, questo, di un aspetto molto importante perché l’applicazione – una volta pubblicata – sarà potenzialmente visibile da parte di tutti gli utenti iscritti a Facebook.
Nel nostro caso, all’interno della sezione Authentication toglieremo il segno di spunta sia da Utenti che Pagine Facebook.
Nella sezione Canvas dovranno essere obbligatoriamente indicati l’URL che consentirà di raggiungere la pagina su Facebook (Canvas Page URL) e l’indirizzo di callback (Canvas callback URL) ossia la locazione ove risiede la nostra applicazione, su server remoto (ad esempio, http://www.vostrourl.abc/facebook/fb_upload.php?
).
Come Render method optiamo per FBML ossia per l’impiego del linguaggio di markup di Facebook.
non deve mai, per nessun motivo, essere comunicata a chicchessia.
desunta dal pannello di configurazione della propria applicazione, su Facebook.
incollandovi all’interno (usare un normale editor di testo) quanto segue:
<?php
require_once 'php/facebook.php';
$appapikey = 'API_KEY';
$appsecret = 'APP_SECRET';
$fb = new FacebookRestClient($appapikey, $appsecret);
$testtoken= "TOKEN_OTTENUTO";
$result = $fb->call_method('facebook.auth.getSession', array('auth_token' => $testtoken, 'generate_session_secret' => true));
echo "<br /><pre>";
// print_r($result);
echo $session_key = $result['session_key'];
?>
Al posto di TOKEN_OTTENUTO
deve essere indicato il codice rilasciato dalla pagina web precedentemente raggiunta.
contenente le librerie client.
Invocando il file da browser ( http://www.vostrourl.abc/facebook/fb_session.php
) verrà generato un ID di sessione. Tale identificativo alfanumerico, visualizzato nella pagina del browser dovrà essere annotato insieme con API key e Secret.
Una volta effettuata quest’operazione, il file fb_session.php
può essere cancellato dal server.
.
All’interno di tale file, dopo averlo aperto con un editor di testo, incolliamo quanto segue:
<?php
require_once('php/facebook.php');
require_once('rss_php.php');
$rss = new rss_php;
// indicare l'url del feed RSS
$rss->load('http://www.vostrourl.abc/nomefeed.rss');
$items = $rss->getItems();
$html = '';
$target_id = 'ID_PAGINA';
$api_key = 'API_KEY';
$app_secret = 'APP_SECRET';
$session_key = 'SESSION_KEY';
$facebook = new Facebook($api_key, $app_secret);
$facebook->api_client->session_key = $session_key;
$facebook->api_client->expires = 0;
$id='';
// indicare una directory sul server che abbia i diritti in scrittura
$thefile = "../directoryscrittura/rss.txt";
if (file_exists($thefile)) {
$id_stop=file_get_contents($thefile);
}
else $id_stop='';
foreach($items as $index => $item) {
$link = strtolower($item['link']);
$id_corr=parse_url($link, PHP_URL_QUERY);
if ($id_corr==$id_stop) break;
if ($id=='') {
$openedfile = fopen($thefile, "w");
fwrite($openedfile, $id_corr);
fclose($openedfile);
$id=$id_corr;
}
$message=''; // testo del messaggio da pubblicare
$attachment = array( 'namè => $item['titlè], 'href' => $link, 'description' => $item['description']);
$action_links = null;
$facebook->api_client->stream_publish($message, $attachment, $action_links, null, $target_id);
}
echo "Operazione completata";
?>
Il valore assegnato alle variabili $target_id
, $api_key
, $app_secret
e $session_key
dovrà essere regolato sulla base dei dati annotati in precedenza.
In particolare, a $target_id
dovrà essere associato l’identificativo numerico della pagina pubblicata su Facebook e a $session_key
l’ID della sessione precedentemente ottenuto.
Un impianto del genere consente, com’è possibile verificare, di leggere il contenuto del feed RSS specificato (dovrà essere indicato l’URL corretto) previa creazione di un oggetto rss_php
.
All’interno del file rss.txt
(che deve essere memorizzato in una cartella, sul server, dotata dei permessi di scrittura) vengono conservati i parametri presenti nell’URL relativo al contenuto più aggiornato presente nel feed RSS. In questo modo, ogniqualvolta, successivamente, si richiamerà la pagina php, questa eviterà di caricare sulla pagina Facebook contenuti già precedentemente pubblicati.
L’invio dei dati a Facebook si concretizza ricorrendo all’impiego del metodo stream.publish
. Esempi circa il suo utilizzo sono pubblicati in questa pagina.
I parametri message
, attachment
e action_links
(il primo è una stringa, il secondo un oggetto, il terzo un array) consentono, rispettivamente, di impostare il testo del messaggio da pubblicare, allegare dei contenuti (testi, immagini e link) e di abbinare un ulteriore collegamento ipertestuale in calce al messaggio.
Nel nostro caso non specifichiamo alcun testo mentre inviamo alla pagina su Facebook solamente un allegato con il contenuto dei vari elementi del feed.
Per concludere, prima di connettersi da browser web all’indirizzo http://www.vostrourl.abc/facebook/fb_upload.php
, si dovrà fornire le autorizzazioni per la modifica della pagina Facebook da parte dell’applicazione. Questo passo si concretizza ricorrendo all’URL seguente: https://www.facebook.com/connect/prompt_permissions.php? api_key=VOSTRA_API_KEY&fbconnect=true&v=1.0&display=popup& extern=1&next=http://www.facebook.com&ext_perm=publish_stream&enable_profile_selector=1
(è necessario aver cura di inserirlo tutto di seguito, senza spazi). Al solito, VOSTRA_API_KEY
va sostituito con l’API key estratta poco fa dal pannello di configurazione dell’applicazione su Facebook.
Suggerimento importante: l’accesso alla pagina http://www.vostrourl.abc/facebook/fb_upload.php
dovrebbe essere permesso solamente agli utenti autorizzati (ad esempio, solamente a voi stessi). Consigliamo quindi di implementare nello script fb_upload.php
un solido meccanismo per l’autenticazione dell’utente: in questo modo si potranno prevenire utilizzi dello script PHP da parte di persone non autorizzate.
Teniamo a precisare, inoltre, che lo script PHP qui proposto deve essere considerato semplicemente come un esempio di massima. Non è detto che funzioni correttamente con i vostri feed RSS e che rispecchi in toto le vostre esigenze. Vi suggeriamo quindi di provare con attenzione e con cautela la soluzione studiandone nel dettaglio il funzionamento ed eventualmente apportando le necessarie migliorie.
La pagina de IlSoftware.it su Facebook, appena varata, è raggiungibile cliccando qui.