Takashi descárgate la librería de Abraham Williams!
twitteroauth - @abraham's Twitter OAuth library for PHP
http://dev.twitter.com/pages/oauth_libraries#phpYo 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
twitteroauth1-
twitteroauth.php2-
OAuth.phpTambié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.phpCó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>