Posted in

Mostrar tweets de una cuenta con PHP

Usamos la siguiente clase a la cual deberemos añadir el Consumer key y el Consumer Secret.

class Twitter {
      private $consumerKey = "123456";
      private $consumerSec = "12345677889";
      public $tweet = false;
      function __construct($username,$filename) {
         $data = @file_get_contents($filename);
         if($data === false) {
            $tweet = $this->fetchNewTweet($username);
            $this->updateSaveFile($filename,$tweet);
            $this->tweet = $tweet;
         }else{
            $data = json_decode($data);
            if($data->{"last_update"}+3600 < time()) {
               $tweet = $this->fetchNewTweet($username);
               $this->updateSaveFile($filename,$tweet);
               $this->tweet = $tweet;
            }else{
               $this->tweet = $data->{"tweet"};
            }
         }
      }
      function updateSaveFile($filename,$tweet) {
         $f = fopen($filename,'w');
         if($f == false) {
            return false;
         }
         $data = array(
            'last_update' => time(),
            'tweet' => $tweet
         );
         fwrite($f,json_encode($data));
         fclose($f);
         return true;
      }
      function fetchNewTweet($username) {
         $consumerEncoded = base64_encode($this->consumerKey.':'.$this->consumerSec);
         $bearerToken = $this->request("https://api.twitter.com/oauth2/token",'Basic',$consumerEncoded,true);
         if($bearerToken == false) {
            return false;
         }
         $tweet = $this->request("https://api.twitter.com/1.1/statuses/user_timeline.json?count=1&screen_name=".$username,'Bearer',$bearerToken);
         $tweet = json_decode($tweet);
         if($tweet == false || $tweet == null) {
            return false;
         }
         return $tweet[0];
      }
      function request($url,$authType,$authValue,$bearer=false) {
         $ch = curl_init();
         if($bearer == true) {
            curl_setopt($ch,CURLOPT_POST,1);
            curl_setopt($ch,CURLOPT_POSTFIELDS,"grant_type=client_credentials");
         }
         curl_setopt($ch,CURLOPT_URL,$url);
         curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
         curl_setopt($ch,CURLOPT_CONNECTTIMEOUT, 5);
         curl_setopt($ch,CURLOPT_USERAGENT, "Tweet Fetcher PHP 0.0.1");
         //curl_setopt($ch,CURLOPT_FOLLOWLOCATION, 1);
         curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false);
         curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,2);
         curl_setopt($ch,CURLOPT_HTTPHEADER,array('Authorization: '.$authType.' '.$authValue,'Content-Type: application/x-www-form-urlencoded;charset=UTF-8'));
         $result = curl_exec($ch);
         curl_close($ch);

         if($bearer == true) {
            $json = json_decode($result);
            if(isset($json->{'access_token'})) {
               return $json->{'access_token'};
            }
            return false;
         }
         return $result;
      }
   }

Crearemos el archivo .cacheFile vacio y añadiremos la ruta de la siguiente forma para mostrar los Tweets:

include('privat/clases/twitter.class.php');
o$twitterUsername = "SmartAttitude1";
o$twitterCacheFile = "privat/cache/.cacheFile";
o$Twitter = new Twitter($twitterUsername, $twitterCacheFile); 

echo $Twitter->tweet->text;
echo $Twitter->tweet->user->{"screen_name"};

Deixa un comentari

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *


The reCAPTCHA verification period has expired. Please reload the page.