49871 Letture

Pubblicare materiale su una pagina Facebook dal proprio sito

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).

Innanzi tutto è bene scaricare la "client library" ufficiale per PHP 5.x cliccando qui.
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).

All'interno di una cartella, su disco (ad esempio c:\facebook), è poi quindi necessario salvare la sottocartella php, 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.

A questo punto, è necessario autenticarsi su Facebook, accedere alla sezione del sito dedicata agli sviluppatori 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.

Le lunghe stringhe esadecimali mostrate accanto alle voci API key e Secret devono essere annotate e custodite gelosamente. In particolare, la chiave Secret non deve mai, per nessun motivo, essere comunicata a chicchessia.

Il passo seguente consiste nel portarsi all'indirizzo https://login.facebook.com/code_gen.php?api_key=VOSTRA_API_KEY&v=1.0 avendo cura, prima di digitare l'URL nel browser, di sostituire VOSTRA_API_KEY con l'API key desunta dal pannello di configurazione della propria applicazione, su Facebook.

Nella cartella \facebook, sul disco fisso, si crei quindi un file denominato fb_session.php 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.


Sul proprio spazio web dovrà ora essere caricata la cartella \facebook dal proprio disco fisso, insieme con la sottodirectory php 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.

Passiamo quindi alla stesura dello script PHP che sovrintenderà il funzionamento dell'applicazione vera e propria. Innanzi tutto creiamo, all'interno della cartella \facebook, sul disco fisso, un file fb_upload.php.
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.

La pagina fb_upload.php dovrà essere caricata sul server insieme con il file rss_php.php, contenuto in questo archivio Zip.


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.


Pubblicare materiale su una pagina Facebook dal proprio sito - IlSoftware.it