diabliyo

twitter lib 2.1

May 7th, 2012
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.97 KB | None | 0 0
  1. <?php
  2. # Twitter Lib v2.1
  3. # M.S.I Angel Cantu Jauregui
  4. # angel.cantu@sie-group.net
  5. # Date May 7, 2012 1:44
  6.  
  7. require_once('twitter/twitteroauth/twitteroauth.php');
  8. define( TWITTER_API_SERVER, "api.twitter.com" ); # servidor seguro api
  9. define( TWITTER_API_REQUEST_TOKEN, "/oauth/request_token" ); # servidor seguro api request token
  10. define( TWITTER_AUTENTICACION_URL, "/oauth/authenticate" ); # URL de autenticacion inicial
  11. define( TWITTER_API_AUTORIZACION, "/oauth/authorize" ); # servidor seguro api autorizacion
  12. define( TWITTER_API_ACCESS_TOKEN, "/oauth/access_token" ); # servidor seguro api access token
  13.  
  14. # variables tu APP
  15. #define( TWITTER_KEY, "OxVEoQkuomecphDsuLQrA" ); # tu key
  16. #define( TWITTER_SECRET, "AKj5xMJFCfkIyX2OdrWoQr96h1zRsKSbJnvgzlz60" ); # key secret
  17. #define( TWITTER_CALLBACK, "http://www.turundus.net" ); # tu callback
  18. define('CONSUMER_KEY', 'OxVEoQkuomecphDsuLQrA');
  19. define('CONSUMER_SECRET', 'AKj5xMJFCfkIyX2OdrWoQr96h1zRsKSbJnvgzlz60');
  20. #if( !is_login() ) # no esta conectado
  21. # define('OAUTH_CALLBACK', HTTP_SERVER. 'log/in/twitter/sync');
  22. #else # si esta conectado
  23. # define('OAUTH_CALLBACK', HTTP_SERVER. 'log/in/twitter');
  24. define('OAUTH_CALLBACK', HTTP_SERVER );
  25.  
  26. # obtenemos informacion especifica de twitter del usuario
  27. # $m es un arreglo: [0] stream (post/get, [1] metodo predefinido, [2] datos extra
  28. function twitter_get( $m, $user)
  29. {
  30. # si no esta sincronizado con twitter
  31. if( !consultar_datos_general("USUARIOS", "ID='". proteger_cadena($user). "'", "TWITTER_ID") )
  32. return 0;
  33. else
  34. {
  35. $tw=array( consultar_datos_general("USUARIOS", "ID='". proteger_cadena($user). "'", "TWITTER_ID"),
  36. consultar_datos_general("USUARIOS", "ID='". proteger_cadena($user). "'", "TWITTER_TOKEN"),
  37. consultar_datos_general("USUARIOS", "ID='". proteger_cadena($user). "'", "TWITTER_TOKEN_SECRET"),
  38. consultar_datos_general("USUARIOS", "ID='". proteger_cadena($user). "'", "TWITTER_ACCESS") );
  39. $connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $tw[1], $tw[2]);
  40. $b='';
  41.  
  42. if( !strcmp($m[1], "imagen") ) # obtenemos imagen del usuario
  43. $b .= 'users/show/'. $tw[0];
  44. else if( !strcmp($m[1], "tweet") ) # enviar un tweet
  45. $b .= 'statuses/update';
  46.  
  47. unset($tw);
  48. if( !strcmp($m[0], "POST") )
  49. return $connection->post($b, array( 'status'=>$m[2]) );
  50. else if( !strcmp($m[0], "GET") )
  51. return $connection->get($b);
  52. return -1;
  53. }
  54. }
  55.  
  56. function twitter_conectar()
  57. {
  58. if( $_SESSION['access_token'] && consultar_datos_general( "USUARIOS", "ID='". proteger_cadena($_SESSION["log_id"]). "' && TWITTER_TOKEN='". proteger_cadena($_SESSION['access_token']). "'", "ID") )
  59. return 1;
  60. return 0;
  61. }
  62.  
  63. function rfc3986_encode($string)
  64. {
  65. $result = rawurlencode($string);
  66. $result = str_replace('%7E', '~', $result);
  67. $result = str_replace('=', '%3D', $result);
  68. $result = str_replace('+', '%2B', $result);
  69. return $result;
  70. }
  71.  
  72. function twitter_geturl_loginout()
  73. {
  74. if( ! ($rqtoken= twitter_request_token()) ) # consultamos por una token
  75. echo '...Error';
  76. else print_r($rqtoken);
  77. }
  78.  
  79. function twitter_get_nonce($tiempo)
  80. {
  81. return md5($tiempo); # md5s look nicer than numbers
  82. }
  83.  
  84. function twitter_encodedata( $buf, $delimiter, $aux )
  85. {
  86. $data=''; # buffer
  87. foreach( $buf as $key=>$val ) # ciclo
  88. {
  89. if( $data )
  90. {
  91. if( $aux==1 ) $data .= $delimiter;
  92. else if( $aux==2 ) $data .= rfc3986_encode($delimiter); # si tiene datos, ponemos delimitador
  93. else $data .= $delimiter;
  94. }
  95.  
  96. if( $aux==2 ) $data .= $key. rfc3986_encode("=");
  97. else $data .= $key. "=";
  98.  
  99. if( $aux ) $data .= rfc3986_encode($val); # concatenamos
  100. else $data .= "\"". rfc3986_encode($val). "\"";
  101. }
  102. return $data; # retornamos
  103. }
  104.  
  105. function twitter_get_signature( $data, $m )
  106. {
  107. if( !is_array($data) ) return 0;
  108.  
  109. $buf= $m[0].'&'. rfc3986_encode( 'https://'. TWITTER_API_SERVER.$m[2]).'&'.twitter_encodedata($data, '&', 2); # obtiene string delimitada por comas y encodeada
  110. $keys= rfc3986_encode(TWITTER_SECRET). '&'. rfc3986_encode($m[1]);
  111. echo '<br><h1>Base String</h1><br>'. $buf;
  112. echo '<br><h1>Signature</h1><br>'. $keys;
  113. $crypt= base64_encode( hash_hmac( 'sha1', $buf, $keys, true ) );
  114. unset($buf, $keys);
  115. echo '<br><h1>Signature Base64:</h1><br>'. $crypt;
  116. return $crypt;
  117. }
  118.  
  119. # obtiene autenticacion para la APP primra vez
  120. function twitter_get_autenticacion()
  121. {
  122. $a= socket_iodata( TWITTER_API_SERVER, array( 'GET', TWITTER_AUTENTICACION_URL ), 443 );
  123. return $a;
  124. }
  125.  
  126. # obtener una request token
  127. function twitter_request_token( $metodo )
  128. {
  129. $tiempo= time();
  130. echo '<br><h1>Reloj:</h1>'. $tiempo. ' ['. date("d/m/y, g:i a", $tiempo). ']<br>';
  131. $oauthmsg= array( "oauth_callback"=>"". TWITTER_CALLBACK. "",
  132. "oauth_consumer_key"=>"". TWITTER_KEY. "",
  133. "oauth_nonce"=>"". twitter_get_nonce($tiempo). "",
  134. "oauth_signature_method"=>"HMAC-SHA1",
  135. "oauth_timestamp"=>"". $tiempo. "",
  136. "oauth_version"=>"1.0" );
  137.  
  138. $firma= twitter_get_signature($oauthmsg, array('POST', '', TWITTER_API_REQUEST_TOKEN) ); # creamos firma apartir de array
  139. if( !$firma )
  140. return 'Error: Generar Firma';
  141. $oauthmsg["oauth_signature"]="". $firma. "";
  142.  
  143. if( !strcmp($metodo, "socket") ) # socket
  144. $rqtoken= socket_iodata( TWITTER_API_SERVER, array( 'POST', TWITTER_API_REQUEST_TOKEN, twitter_encodedata($oauthmsg, ',', 0), 'oauth' ), 443 );
  145. else $rqtoken= curl_iodata( TWITTER_API_SERVER, array( 'POST', TWITTER_API_REQUEST_TOKEN, twitter_encodedata($oauthmsg, ',', 0), 'oauth', twitter_encodedata($oauthmsg, ',', 0) ), 443 ); # curl
  146. unset($oauthmsg);
  147.  
  148. #if( $rqtoken==-1 )
  149. # {
  150. # echo 'Error Socket Connection';
  151. # return 0;
  152. # }
  153. #else if( !$rqtoken )
  154. # {
  155. # echo 'Error No Data in Oauth Request: '. $rqtoken;
  156. # return 0;
  157. # }
  158.  
  159. return $rqtoken;
  160. }
  161.  
  162. # obtener una request token
  163. function twitter_access_token( $metodo )
  164. {
  165. $tiempo= time();
  166. $oauthmsg= array( "oauth_callback"=>"". TWITTER_CALLBACK. "",
  167. "oauth_consumer_key"=>"". TWITTER_KEY. "",
  168. "oauth_nonce"=>"". twitter_get_nonce($tiempo). "",
  169. "oauth_signature_method"=>"HMAC-SHA1",
  170. "oauth_timestamp"=>"". $tiempo. "",
  171. "oauth_version"=>"1.0" );
  172. #"x_auth_mode"=>"client_auth",
  173. #"x_auth_password"=>"twitter-xauth",
  174. #"x_auth_username"=>"oauth_test_exec" );
  175.  
  176. #$post_data= array( "x_auth_mode"=>"client_auth",
  177. # "x_auth_password"=>"twitter-xauth",
  178. # "x_auth_username"=>"oauth_test_exec" );
  179.  
  180. $firma= twitter_get_signature($oauthmsg, array('POST', '', TWITTER_API_ACCESS_TOKEN) ); # creamos firma apartir de array
  181. if( !$firma )
  182. return 'Error: Generar Firma';
  183. $oauthmsg["oauth_signature"]="". $firma. "";
  184.  
  185. # twitter_encodedata($post_data, '&', 0)
  186. if( !strcmp($metodo, "socket") ) # socket
  187. $rqtoken= socket_iodata( TWITTER_API_SERVER, array( 'POST', TWITTER_API_ACCESS_TOKEN, twitter_encodedata($oauthmsg, ',', 1), 'oauth' ), 443 );
  188. else $rqtoken= curl_iodata( TWITTER_API_SERVER, array( 'POST', TWITTER_API_ACCESS_TOKEN, twitter_encodedata($oauthmsg, ',', 1), 'oauth' ), 443 ); # curl
  189. unset($oauthmsg);
  190.  
  191. #if( $rqtoken==-1 )
  192. # {
  193. # echo 'Error Socket Connection';
  194. # return 0;
  195. # }
  196. #else if( !$rqtoken )
  197. # {
  198. # echo 'Error No Data in Oauth Request: '. $rqtoken;
  199. # return 0;
  200. # }
  201.  
  202. return $rqtoken;
  203. }
  204.  
  205. function twitter_boxsearch()
  206. {
  207. return '<script charset="utf-8" src="http://widgets.twimg.com/j/2/widget.js"></script>
  208. <script>
  209. new TWTR.Widget({
  210. version: 2,
  211. type: \'search\',
  212. search: \'turundus reynosa\',
  213. interval: 30000,
  214. title: \'Turunderos en...\',
  215. subject: \'Reynosa\',
  216. width: 175,
  217. height: 350,
  218. theme: {
  219. shell: {
  220. background: \'#8ec1da\',
  221. color: \'#ffffff\'
  222. },
  223. tweets: {
  224. background: \'#ffffff\',
  225. color: \'#444444\',
  226. links: \'#1985b5\'
  227. }
  228. },
  229. features: {
  230. scrollbar: true,
  231. loop: true,
  232. live: true,
  233. behavior: \'default\'
  234. }
  235. }).render().start();
  236. </script>';
  237. }
  238.  
  239.  
  240. ?>
Add Comment
Please, Sign In to add comment