Comunidad de diseño web y desarrollo en internet online

Enviar mensajes a twitter desde mi aplicacion

Citar            
MensajeEscrito el 20 Ene 2011 08:16 pm
He estado tratando desde hace ya un buen rato de integrar mis noticias para que al momento de publicar una se envie directamente a twitter con el enlace hacia la web.
Anteriormente ya lo tenia de esta forma y funcionaba perfectamente pero cuando el año pasado twitter cambio su sistema de autenticacion todo se vino abajo y el dia de hoy estoy buscando nuevamente la forma de hacer esto y no consigo como hacerlo, ahora al parecer es mucho mas complicado que antes, si alguien puede ayudarme se lo agradecere eternamente.

Por Takashi

Claber

105 de clabLevel



Genero:Masculino  

Caracas - Venezuela

firefox
Citar            
MensajeEscrito el 23 Feb 2011 07:45 pm
Takashi descárgate la librería de Abraham Williams!
twitteroauth - @abraham's Twitter OAuth library for PHP
http://dev.twitter.com/pages/oauth_libraries#php

Yo utilicé esta abraham-twitteroauth-0.2.0-beta3-0-g76446fa.zip para el ejemplo que te pongo más abajo.

Para tu propósito sólo necesitas los dos archivos que están dentro de la carpeta twitteroauth

1- twitteroauth.php
2- OAuth.php

También te cuento que tuve problemas con algunas versiones anteriores de PHP para hacer funcionar la librería pero con la última que está disponible a la fecha PHP 5.2.17 e incluso con la anterior (PHP 5.2.16) va cómo piña!!!

Yo también me rompí la cabeza varias semanas.
Cualquier cosa avísame. Saludos!

Ejemplo twitter.php

Código HTML :

<?php

/* ############################################################# *
 * PRUEBA DE LA API DE TWITTER CON ACORTADOR DE URL DESDE BIT.LY *
 * ############################################################# */
 
 /**
 * Para registrar la aplicación y obtener el Consumer key, Consumer secret, OAuth Token y el OAuth Token Secret,
 * dirigirse a http://dev.twitter.com/apps
 */

function status_twitter($link, $noticia) {
   /* ######### PARA QUE FUNCIONE ESTA LIBRERIA ES NECESARIO ##########
      ######### TENER ACTIVADA LA EXTENSION CURL EN PHP.INI  ########## */
  require('twitter/twitteroauth.php'); // Ruta donde tenemos en nuestro servidor la librería de Abraham.
  
  define('_CONSUMER_KEY','A_G_R_E_A_G_A_R--E_L--T_U_Y_O'); // Sustituye el segundo parámetro por tu Consumer key.
  define('_CONSUMER_SECRET','A_G_R_E_G_A_R--E_L--T_U_Y_O'); // Sustituye el segundo parámetro por tu Consumer secret.
  define('_OAUTH_TOKEN','A_G_R_E_G_A_R--E_L--T_U_Y_O'); // Sustituye el segundo parámetro por tu OAuth Token.
  define('_OAUTH_TOKEN_SECRET','A_G_R_E_G_A_R--E_L--T_U_Y_O'); // Sustituye el segundo parámetro por tu OAuth Token Secret.
  
  // Función para acortar URL con bit.ly . Primero debemos registrarnos en http://bit.ly para obtener clave api y usuario
  function bitly($url_larga){
     $tiny = "http://api.bit.ly/v3/shorten?login=AQUI_VA_TU_NOMBRE_DE_USUARIO_EN_BIT_LY&apiKey=AQUI_VA_TU_API_KEY&format=txt&longUrl=".$url_larga;
     $sesion = curl_init();
     curl_setopt($sesion, CURLOPT_URL, $tiny);
     curl_setopt($sesion, CURLOPT_RETURNTRANSFER, 1);
     $url_tiny = curl_exec($sesion);
     curl_close($sesion);
     return($url_tiny);
   }
   
       $bit = bitly($link); // Reducimos el link con la api de bit.ly
       $quedan = (140-strlen($bit))-4; // Calculamos los caracteres restantes que nos quedan para publicar restando los puntos suspensivo
      $noticia = substr($noticia, 0, $quedan). ' ...' . $bit; // Cortamos el mensaje en caso de que sea muy largo
 
  function getConnectionWithAccessToken() {
    $connection = new TwitterOAuth(_CONSUMER_KEY, _CONSUMER_SECRET,_OAUTH_TOKEN, _OAUTH_TOKEN_SECRET);
    return $connection;
  }
  $connection = getConnectionWithAccessToken();
  $twitter = $connection->post('statuses/update', array('status' => $noticia));  
  return $noticia;  
}

// Comprobamos que existan las variables
if(isset($_POST['noticia'], $_POST['link'])) {
   
   // Convertimos texto URL a enlace
   function toLink($text){
      $text = html_entity_decode($text);
      $text = " ".$text;
      $text = eregi_replace('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_\+.~#?&//=]+)','<a href="\\1">\\1</a>', $text);
       $text = eregi_replace('(((f|ht){1}tps://)[-a-zA-Z0-9@:%_\+.~#?&//=]+)','<a href="\\1">\\1</a>', $text);
      $text = eregi_replace('([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_\+.~#?&//=]+)','\\1<a href="http://\\2">\\2</a>', $text);
       $text = eregi_replace('([_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3})','<a href="mailto:\\1">\\1</a>', $text);
        return $text;
   }

   // Llamamos a la función para enviar el mensaje y acortar la url larga
   $elres = status_twitter($_POST['link'], $_POST['noticia']);
    $txtRes = toLink($elres);
} 

   
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Actualizar el estado de nuestro espacio en Twitter con PHP + TwitterOAuth</title>
<style type="text/css">
#header{
   font-family:Verdana, Geneva, sans-serif;
    color: #C00;
    width: 800px;
    height: 80px;
    text-align: center;
    margin-top: 0;
    margin-right: auto;
    margin-bottom: 0;
    margin-left: auto;
}

.txt {
   font-family: Verdana, Geneva, sans-serif;
   font-size: 12px;
   color: #069;
   font-weight: bold;
    margin-bottom: 9px;
}

#nota {
   text-align: left;
   margin:-5px 0 5px 0;
   padding: 15px;
    width: 390px;
   border: 1px solid #FF8585;
   background-color: #FBE1DB;

}

.nota {
   font-family: Tahoma, Geneva, sans-serif;
   font-size: 12px;
   font-weight: bold;
   background-color: #FFFFFF;
   border: solid 1px #5ea0c1;
   text-align: center;   
   color: #C00;
}
   
</style>
</head>

<body>
<div id="header">
<h3>Actualizar el estado en Twitter con PHP + TwitterOAuth.</h3>
</div>
    <div id="updateStatus_Twitter">
     <form name="form_UpdateTwitter" method="post" action="http://www.tudominio.com/twitter.php">
      <p class="txt">
        <label for="noticia">¿Qué está pasando?</label></p>
      <textarea name="noticia" id="noticia" cols="32" rows="5"></textarea>      
      <p>
        <label class="txt" for="url">URL</label> 
        <input name="link" id="link" type="text" value="http://www.unaurlparaacortar.com/" size="50" />
      </p>
      <p>
        <input type="submit" value="Twittear" />
      </p>
    </form>
    </div>
    <div id="nota" class="nota">
    NOTA: No te he enviado la aplicación que tiene cuenta caracteres restantes y la opción de elegir agregar o no una URL entre otras funciones, pero con este ejemplo lo puedes adaptar de forma muy simple para lo que buscas!<br/ ><br />También puede contener algun error de validación campos vacios por esto --> value="http://www.unaurlparaacortar.com/" </div>
    <br />
<br />
<?php
if(isset($_POST['noticia'], $_POST['link'])) {      
   echo "Este es el resultado de la actualización del estado de nuestro Twitter y acortamiento de la URL con Bit.ly<br />\n<br />\n<b>" . $txtRes . "</b>\n<br />";
}else{
    echo "Sin resultados de actualización de espacio en Twitter y acortamiento de URL con Bit.ly\n<br />";   
}
?>
</body>
</html>

Por Maxdgy

104 de clabLevel



Genero:Masculino  

Argentina

msie8
Citar            
MensajeEscrito el 18 Mar 2011 04:26 am
Hola, ya he probado esto, y por alguna razón ANTES funcionaba, pero ahora por mas que le he buscado, no puedo hacer que funcione, me sale esto:

...INVALID_LOGIN después del mensaje que intento enviar, ya chequé TODOS los datos, API, CONSUMER, OAUTH, lo SECRETS, TODOS están correctos, la app la hice con configuración de Client y Leer y Escribir seleccionado, pero NO JALA =? que será??? gracias

Por sarsach

1 de clabLevel



 

chrome
Citar            
MensajeEscrito el 22 Mar 2011 06:08 am
absolutamente no tengo idea de lo que pasó, pero cambié de servidor el script y funcionó perfectamente.

Por sarsach

1 de clabLevel



 

chrome
Citar            
MensajeEscrito el 04 Abr 2011 05:45 am
Lo que seguramente sucedio es que el primer servidor que usastes no permitia utilzar la api de twitter (tenia bloquedo hacer requests a dicha api) y el segundo servidor no tenia esta restriccion. Seria bueno que publicaras los nombres de los servicios de hosting, para que asi otras personas sepan cual funciona y cual no.

Por jservingo

3 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.