Ver Mensaje Individual
  #2 (permalink)  
Antiguo 19/05/2010, 00:42
Avatar de Triby
Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 4 meses
Puntos: 2237
Respuesta: [Aporte] cURL y safe_mode = 'On' para API's (Twitter y Bit.ly)

Como usar esta funcion y las clases de Twitter y Bit.ly?

Ejemplo:
Código PHP:
Ver original
  1. // Ruta para buscar archivos a incluir
  2. $incdir = '/ruta/de/tu/sitio';
  3. // Matriz con opciones de configuracion, yo la cargo desde BDD
  4. $aconfig = array(
  5.     'twuser' => 'usuariotwitter',
  6.     'twpass' => 'contraseña_twitter',
  7.     'btlyuser' => 'usuariobitly',
  8.     'btlypass' => 'apiKey' // Es mejor usar api Key que la contraseña de usuario
  9. );
  10.  
  11. function twitter_update($status, $url = '') {
  12.     global $incdir, $aconfig;
  13.  
  14.     // Creamos las variables necesarias y verificamos que todo este correcto
  15.     $twuser = (isset($aconfig['twuser'])) ? $aconfig['twuser'] : '';
  16.     $twpass = (isset($aconfig['twpass'])) ? $aconfig['twpass'] : '';
  17.     $btlyuser = (isset($aconfig['btlyuser'])) ? $aconfig['btlyuser'] : '';
  18.     $btlypass = (isset($aconfig['btlypass'])) ? $aconfig['btlypass'] : '';
  19.  
  20.     if($status == '')
  21.         return 'Por favor teclea el texto de tu nuevo estado en Twitter.';
  22.  
  23.     if($twuser == '' || $twpass == '')
  24.         return 'Las opciones de Twitter no están configuradas';
  25.  
  26.     if($url != '') {
  27.         // Aqui entramos solo si es necesario recortar un enlace
  28.         if($btlyuser == '' || $btlypass == '')
  29.             return 'Las opciones de Bit.ly no están configuradas.';
  30.  
  31.         // Usamos include_once por si el proceso se ejecuta mas de una vez
  32.         include_once "$incdir/classes/bitly.php";
  33.  
  34.         // Establecemos opciones, y ejecutamos
  35.         $btly = new Bitly($btlyuser, $btlypass);
  36.         $btly->setUserAgent('Bit.ly-php');
  37.         $btres = $btly->shorten($url);
  38.  
  39.         // Verificamos si se recorto correctamente el enlace
  40.         if(isset($btres['url']) && $btres['url'] != '')
  41.             $url = ' ' . $btres['url'];
  42.         else
  43.             return 'No se pudo recortar la dirección de la página a enlazar.';
  44.        
  45.     }
  46.  
  47.     // Limpiamos un poco el texto a publicar en Twitter
  48.     $ents = array("'", '"', '<', '>', '\\');
  49.     $status = trim(str_replace($ents, '', $status));
  50.     $status = utf8_encode($status);
  51.  
  52.     // Si se incluyo un enlace, hay que garantizar que aparezca completo
  53.     if($url != '') {
  54.         $max = 140 - strlen($url);
  55.         if(strlen($status) > $max)
  56.             $status = substr($status, 0, $max);
  57.         $status .= $url;
  58.     }
  59.     include_once "$incdir/classes/twitter.php";
  60.  
  61.     // Establecemos opciones y ejecutamos
  62.     $tw = new Twitter($twuser, $twpass);
  63.     $tw->setUserAgent('Twitter-php');
  64.     $twres = $tw->updateStatus($status);
  65.  
  66.     // Verificamos si se publico el nuevo estado
  67.     if(!isset($twres['id']) || !is_numeric($twres['id']) || $twres['id'] < 0)
  68.         return 'Error desconocido: no se pudo actualizar el estado en Twitter';
  69.     return '';
  70. }
  71.  
  72.  
  73. $tw_resultado = twitter_update('Probando a actualizar el estado de Twitter desde PHP', 'http://www.forosdelweb.com/f18/aporte-curl-safe_mode-para-apis-twitter-bit-ly-808160/');
  74.  
  75. if($tw_resultado != '')
  76.     die("'Error actualizando estado en Twitter: $tw_resultado");
__________________
- León, Guanajuato
- GV-Foto