diabliyo

twitter lib 2.1

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