diabliyo

twitter lib 1.0

Feb 24th, 2012
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 5.66 KB | None | 0 0
  1. <?php
  2. # Twitter Lib v1.0
  3. # M.S.I Angel Cantu Jauregui
  4. # angel.cantu@sie-group.net
  5. # Date Feb 24, 2012 22:44
  6.  
  7. define( TWITTER_API_SERVER, "api.twitter.com" ); # servidor seguro api
  8. define( TWITTER_API_REQUEST_TOKEN, "/oauth/request_token" ); # servidor seguro api request token
  9. define( TWITTER_AUTENTICACION_URL, "/oauth/authenticate" ); # URL de autenticacion inicial  
  10. define( TWITTER_API_AUTORIZACION, "/oauth/authorize" ); # servidor seguro api autorizacion
  11. define( TWITTER_API_ACCESS_TOKEN, "/oauth/access_token" ); # servidor seguro api access token
  12.  
  13. # variables tu APP
  14. define( TWITTER_KEY, "MI_KEY" ); # tu key
  15. define( TWITTER_SECRET, "MI_SECRET" ); # key secret
  16. define( TWITTER_CALLBACK, "MI_URL_" ); # tu callback
  17.  
  18. function rfc3986_encode($string)  
  19.     {  
  20.     $result = rawurlencode($string);  
  21.     $result = str_replace('%7E', '~', $result);  
  22.     $result = str_replace('=', '%3D', $result);  
  23.     $result = str_replace('+', '%2B', $result);  
  24.     return $result;  
  25.     }  
  26.  
  27. function twitter_geturl_loginout()
  28.     {
  29.     if( ! ($rqtoken= twitter_request_token()) ) # consultamos por una token
  30.         echo '...Error';
  31.     else        print_r($rqtoken);
  32.     }
  33.    
  34. function twitter_get_nonce()
  35.     {
  36.     $tiempo= time();
  37.     return md5($tiempo); # md5s look nicer than numbers
  38.     }
  39.  
  40. function twitter_encodedata( $buf, $delimiter, $aux )
  41.     {
  42.     $data=''; # buffer
  43.     foreach( $buf as $key=>$val ) # ciclo
  44.         {
  45.         if( $data )
  46.             {
  47.             $data .= $delimiter; # si tiene datos, ponemos delimitador
  48.             if( $aux )      $data .= "\r\n";
  49.             }
  50.         $data .= $key. "=";
  51.        
  52.         if( !$aux )     $data .= $val; # concatenamos
  53.         else        $data .= "\"". rfc3986_encode($val). "\"";
  54.         }
  55.     return $data; # retornamos
  56.     }
  57.  
  58. function twitter_get_signature( $data, $m )
  59.     {
  60.     if( !is_array($data) )      return 0;
  61.    
  62.     $buf= $m[0].'&'. rfc3986_encode( 'https://'. TWITTER_API_SERVER.$m[2]).'&'.twitter_encodedata($data, ',', 0); # obtiene string delimitada por comas y encodeada
  63.     $keys= rfc3986_encode(TWITTER_SECRET). '&'. rfc3986_encode($m[1]);
  64.     echo '<h1>'. $buf. '</h1>';
  65.     $crypt= base64_encode( hash_hmac( 'sha1', $buf, $keys, true ) );
  66.     unset($buf, $keys);
  67.     return $crypt;
  68.     }
  69.  
  70. # obtiene autenticacion para la APP primra vez
  71. function twitter_get_autenticacion()
  72.     {
  73.     $a= socket_iodata( TWITTER_API_SERVER, array( 'GET', TWITTER_AUTENTICACION_URL ), 443 );
  74.     return $a;
  75.     }
  76.  
  77. # obtener una request token
  78. function twitter_request_token( $metodo )
  79.     {
  80.     $tiempo= time();
  81.     $oauthmsg= array( "oauth_callback"=>"". TWITTER_CALLBACK. "",
  82.                                 "oauth_consumer_key"=>"". TWITTER_KEY. "",
  83.                                 "oauth_nonce"=>"". twitter_get_nonce(). "",
  84.                                 "oauth_signature_method"=>"HMAC-SHA1",
  85.                                 "oauth_timestamp"=>"". $tiempo. "",
  86.                                 "oauth_version"=>"1.0" );
  87.  
  88.     $firma= twitter_get_signature($oauthmsg, array('POST', '', TWITTER_API_REQUEST_TOKEN) ); # creamos firma apartir de array
  89.     if( !$firma )
  90.         return 'Error: Generar Firma';
  91.     $oauthmsg["oauth_signature"]="". $firma. "";
  92.    
  93.     if( !strcmp($metodo, "socket") ) # socket
  94.         $rqtoken= socket_iodata( TWITTER_API_SERVER, array( 'POST', TWITTER_API_REQUEST_TOKEN, twitter_encodedata($oauthmsg, ',', 1), 'oauth' ), 443 );
  95.     else        $rqtoken= curl_iodata( TWITTER_API_SERVER, array( 'POST', TWITTER_API_REQUEST_TOKEN, twitter_encodedata($oauthmsg, ',', 1), 'oauth' ), 443 ); # curl
  96.     unset($oauthmsg);
  97.  
  98.     #if( $rqtoken==-1 )
  99.     #   {
  100.     #   echo 'Error Socket Connection';
  101.     #   return 0;
  102.     #   }
  103.     #else if( !$rqtoken )
  104.     #   {
  105.     #   echo 'Error No Data in Oauth Request: '. $rqtoken;
  106.     #   return 0;
  107.     #   }
  108.        
  109.     return $rqtoken;
  110.     }
  111.  
  112. # obtener una request token
  113. function twitter_access_token( $metodo )
  114.     {
  115.     $tiempo= time();
  116.     $oauthmsg= array( "oauth_callback"=>"". TWITTER_CALLBACK. "",
  117.                                 "oauth_consumer_key"=>"". TWITTER_KEY. "",
  118.                                 "oauth_nonce"=>"". twitter_get_nonce(). "",
  119.                                 "oauth_signature_method"=>"HMAC-SHA1",
  120.                                 "oauth_timestamp"=>"". $tiempo. "",
  121.                                  "oauth_version"=>"1.0" );
  122.                                  #"x_auth_mode"=>"client_auth",
  123.                                  #"x_auth_password"=>"twitter-xauth",
  124.                                  #"x_auth_username"=>"oauth_test_exec" );
  125.                                  
  126.     #$post_data= array( "x_auth_mode"=>"client_auth",
  127.     #                            "x_auth_password"=>"twitter-xauth",
  128.     #                            "x_auth_username"=>"oauth_test_exec" );
  129.  
  130.     $firma= twitter_get_signature($oauthmsg, array('POST', '', TWITTER_API_ACCESS_TOKEN) ); # creamos firma apartir de array
  131.     if( !$firma )
  132.         return 'Error: Generar Firma';
  133.     $oauthmsg["oauth_signature"]="". $firma. "";
  134.    
  135.     # twitter_encodedata($post_data, '&', 0)
  136.     if( !strcmp($metodo, "socket") ) # socket
  137.         $rqtoken= socket_iodata( TWITTER_API_SERVER, array( 'POST', TWITTER_API_ACCESS_TOKEN, twitter_encodedata($oauthmsg, ',', 1), 'oauth' ), 443 );
  138.     else        $rqtoken= curl_iodata( TWITTER_API_SERVER, array( 'POST', TWITTER_API_ACCESS_TOKEN, twitter_encodedata($oauthmsg, ',', 1), 'oauth' ), 443 ); # curl
  139.     unset($oauthmsg);
  140.  
  141.     #if( $rqtoken==-1 )
  142.     #   {
  143.     #   echo 'Error Socket Connection';
  144.     #   return 0;
  145.     #   }
  146.     #else if( !$rqtoken )
  147.     #   {
  148.     #   echo 'Error No Data in Oauth Request: '. $rqtoken;
  149.     #   return 0;
  150.     #   }
  151.        
  152.     return $rqtoken;
  153.     }
  154.  
  155. function twitter_boxsearch()
  156.     {
  157. return '<script charset="utf-8" src="http://widgets.twimg.com/j/2/widget.js"></script>
  158. <script>
  159. new TWTR.Widget({
  160.  version: 2,
  161.  type: \'search\',
  162.  search: \'turundus reynosa\',
  163.  interval: 30000,
  164.  title: \'Turunderos en...\',
  165.  subject: \'Reynosa\',
  166.  width: 175,
  167.  height: 350,
  168.  theme: {
  169.    shell: {
  170.      background: \'#8ec1da\',
  171.      color: \'#ffffff\'
  172.    },
  173.    tweets: {
  174.      background: \'#ffffff\',
  175.      color: \'#444444\',
  176.      links: \'#1985b5\'
  177.    }
  178.  },
  179.  features: {
  180.    scrollbar: true,
  181.    loop: true,
  182.    live: true,
  183.    behavior: \'default\'
  184.  }
  185. }).render().start();
  186. </script>';
  187.     }
  188.  
  189.  
  190. ?>
Add Comment
Please, Sign In to add comment