12600 Letture

Caricare automaticamente i feed RSS su Twitter e Facebook

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


  1. Avatar
    nory
    31/12/2015 18:11:51
    Ciao, c'è uno script PHP per trovare solo il link feed RSS o Atom di una pagina Facebook? Ad esempio voglio ricevere le novità dalla pagina Facebook https://www.facebook.com/IlSoftware/ quindi cambiare il link in http://mysite.com/feed/123456789.xml oppure in Atom, Rss ecc. Mi serve per avere aggiornamenti su più di 2000 pagine Facebook. Vorrei avere un link feed per leggere le varie pagine comodamente da un Rss Reader come RSSOwl (e cercare per parole chiave, posts ecc) ma non trovo nessun metodo semplice :( Ho anche un server VPS sul quale usarli. Grazie mille in anticipo
Caricare automaticamente i feed RSS su Twitter e Facebook - IlSoftware.it