diabliyo

twitter lib 2.0

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