Sconti Amazon
giovedì 9 settembre 2010 di 15430 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).


Buoni regalo Amazon
Caricare automaticamente i feed RSS su Twitter e Facebook - IlSoftware.it