Come promesso, vi presentiamo uno script PHP che consente di effettuare l’uploading automatico delle informazioni contenute in un feed RSS sui social network Twitter e Facebook.
Prima di procedere, è bene rileggere attentamente il contenuto dei seguenti due articoli:
– Pubblicare materiale su una pagina Facebook dal proprio sito
– Interagire con Twitter utilizzando il protocollo Oauth
Il nostro obiettivo, questa volta, è modificare il file twitter_oauth.php
affinché sia in grado di leggere gli ultimi feed RSS e di ripubblicarli sia su Twitter che su Facebook.
Per gestire l’invio delle informazioni alle pagine dei social network e le risposte ottenute, viene utilizzata la libreria libcurl. Essa consente di connettersi e comunicare con vari server impiegando molteplici protocolli differenti. E’ quindi indispensabile che il vostro server web supporti libcurl: nel caso in cui la corrispondente estensione non fosse abilitata, è necessario provvedere editando il file PHP.INI
(dinanzi alla riga extension=php_curl.dll
non deve essere presente il segno del punto e virgola).
Sul server web, nella medesima directory, si dovrà estrarre il contenuto del file compresso contenente le “Client library” Facebook per PHP 5.x, salvare la sottocartella twitteroauth
contenente i file OAuth.php
e twitteroauth.php
, i due file il file twitter_login.php
e twitter_oauth.php
, infine il file rss_php.php
(contenuto in questo archivio Zip).
Si provi quindi a modificare il file twitter_oauth.php
così come segue:
<?php
require("twitteroauth/twitteroauth.php");
require_once('facebook.php');
require_once("rss_php.php");
session_start();
if(!empty($_GET['oauth_verifier']) && !empty($_SESSION['oauth_token']) && !empty($_SESSION['oauth_token_secret'])){
// Instanzia TwitterOAuth con i due nuovi parametri ottenuti da twitter_login.php
$twitteroauth = new TwitterOAuth('CONSUMER_KEY', 'CONSUMER_SECRET', $_SESSION['oauth_token'], $_SESSION['oauth_token_secret']);
// Richiesta del token
$access_token = $twitteroauth->getAccessToken($_GET['oauth_verifier']);
$_SESSION['access_token'] = $access_token;
// dati autenticazione Facebook
$target_id = 'ID_PAGINA';
$api_key = 'API_KEY';
$app_secret = 'APP_SECRET';
$session_key = 'SESSION_KEY';
// inizializzazione Facebook
$facebook = new Facebook($api_key, $app_secret);
$facebook->api_client->session_key = $session_key;
$facebook->api_client->expires = 0;
$message='';
$rss = new rss_php;
// indicare l'url del feed RSS
$rss->load('http://www.nomedelsito.abc/feed_rss.php');
$items = $rss->getItems();
$html = '';
$id='';
// indicare una directory sul server che abbia i diritti in scrittura
$thefile = "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;
}
// posting su Twitter
$twitteroauth->post('statuses/update', array('status' => $item['title'] .' - '. str_replace('www.ilsoftware.it/news', 'ilsw.it/articolì, $link) ));
// posting su Facebook
if (strrpos($link, "querydl.asp")==0) {
$attachment = array( 'name' => $item['title'], 'href' => $link, 'description' => $item['description']);
$action_links = null;
$facebook->api_client->stream_publish($message, $attachment, $action_links, null, $target_id);
}
}
echo '<br /><b>Operazione completata.<br /><br /><a href="//www.ilsoftware.it/twitter_login.php">Ricarica</a>';
} else {
header('Location: twitter_login.php');
}
?>
Al posto di CONSUMER_KEY
e CONSUMER_SECRET
vanno specificate le stringhe alfanumeriche annotate all’atto della registrazione della nuova applicazione su Twitter.
Il valore assegnato alle variabili $target_id, $api_key, $app_secret
e $session_key
dovrà essere regolato sulla base dei dati annotati nel momento in cui si è provveduto a registrare la propria applicazione su Facebook.
In particolare, a $target_id
deve essere associato l’identificativo numerico della pagina pubblicata su Facebook e a $session_key
l’ID della sessione precedentemente ottenuto.
In corrispondenza delle righe // posting su Twitter
e // posting su Facebook
è possibile attivare, rispettivamente, un controllo sulla lunghezza della stringa di caratteri inviata (in modo che non superi i 140 caratteri previsti per il posting di contenuti su Twitter) e l'”upload” di un’immagine su Facebook (ved. questa pagina sul sito ufficiale dedicato agli sviluppatori).