Si deseas compartir tus enlaces en dispositivos móviles o en Twitter que tiene un límite de 140 caracteres es necesario acortar nuestros URLs. Para ello podemos utilizar Bit.ly, un popular servicio para acortar enlaces el cual acaba de sacar la nueva versión de su API, como lo detallan en Introducing bit.ly API Version 3. En una anterior oportunidad habíamos comentado como Acortar URLs con bit.ly y PHP pero ahora actualizaremos nuestro código utilizando el nuevo API.
Nueva API Version 3
Examinando la documentación de la nueva API en bit.ly API Documentation podemos utilizar los URLs con el siguiente formato:
Para acortar un URL.
http://api.bit.ly/v3/shorten?login=user&apiKey=key&uri=url&format=fmt
Para expandir un URL
http://api.bit.ly/v3/expand?login=user&apiKey=key&shortUrl=url&format=fmt
Donde se tiene los siguientes parámetros:
- user: es tu nombre de usuario en bit.ly
- key es el API Key asociado a tu cuenta de usuario.
- url es el url que deseamos acortar o expandir.
- fmt es el formato de la respuesta (Usaremos txt que devuelve texto).
Creando un Clase para bit.ly
Basado en estos formatos podemos crear un clase básica que permite acortar o expandir URLs utilizando el nuevo API de bit.ly
class Bitly { var $path; var $user; var $key; function Bitly ($_user, $_key) { $this->path = "http://api.bit.ly/v3/"; $this->user = $_user; $this->key = $_key; } function shorten($url) { $temp = $this->path."shorten?login=".$this->user."&apiKey=".$this->key."&uri=".$url."&format=txt"; $data = file_get_contents($temp); return $data; } function expand($url) { $temp = $this->path."expand?login=".$this->user."&apiKey=".$this->key."&shortUrl=".$url."&format=txt"; $data = file_get_contents($temp); return $data; } }
Como se observa esta clase tiene dos métodos: shorten y expand.
Ejemplo de Uso
Para utilizar esta clase lo primero es incluir la clase al inicio de nuestro script PHP y luego crear una instancia de la clase Bitly que recibe dos parámetros (nombre de usuario y key de usuario).
require("bitly.php"); $bitly = new Bitly("bitly-user", "bitly-api-key");
Luego si deseamos acortar un URL lo haríamos de la siguiente forma:
require("bitly.php"); $bitly = new Bitly("bitly-user", "bitly-api-key"); $urlmin = $bitly->shorten("http://blog.unijimpe.net/utilizar-recaptcha-con-php/"); echo $urlmin; // imprime: http://bit.ly/cMea1K
Si tienes un URL acortada y deseas saber el URL original puedes hacerlo de la siguiente forma:
require("bitly.php"); $bitly = new Bitly("bitly-user", "bitly-api-key"); $urlbig = $bitly->expand("http://bit.ly/cMea1K"); echo $urlbig; // imprime: http://blog.unijimpe.net/utilizar-recaptcha-con-php/
Les dejo los archivos fuente para esta clase para que hagan sus pruebas. Si tienen sugerencias y observaciones dejen sus comentarios para poder mejorar este trabajo.
[download id=»37″ autop=»false»]
Comentarios Total 11 comentarios
Publicado: 10/04/2010 8:22 am
Genial! Muchas gracias!
Publicado: 13/04/2010 8:39 pm
Que buen aporte. Estaría bueno integrar este acortador de url en la clase que crea enlaces para las redes sociales.
Una correción, en la linea 4 del último cuadro de texto se debería imprimir $urlbig.
Saludos desde Paraguay.
Publicado: 13/04/2010 9:03 pm
mharcos, gracias por tu observación. Tenías razón la línea 4 del ultimo código estaba equivocada y ya la corregí para los demás visitantes.
Publicado: 13/04/2010 10:22 pm
[…] dinámicamente los URLs acortados.Para una versión actualizada de este artículo pueden leer: Acortar URLs con PHP y API Bit.lyAPI del Bit.ly Este API brinda metodos para acortar y expandir URLs, ver estadisticas y datos del […]
Publicado: 09/06/2010 5:35 am
¡Buenas!
Uso una extensión de Firefox llamada UrlbarExt que permite acortar las URL desde la barra de tareas.
Estoy intentando configurar las opciones de dicho plugin para que los enlaces se guarden en mi cuenta de bit.ly (dejo una captura)
El caso es que tras mirar la API y tu post, no consigo aún que funcione correctamente porque no se qué parte de:
http://api.bit.ly/v3/shorten?login=user&apiKey=key&uri=url&format=fmt
(con mis valores, claro)
tengo que poner en el campo «api» y cuál en el de «argumentos».
Si pudieras ayudarme te lo agradecería mucho. En cualquier caso, ¡muchas gracias por tu tiempo y felicidades por el blog!
Publicado: 01/12/2010 12:20 pm
Yo encontre este sitio http://curl.cl que me parece super amigable tienes opciones de api para desarrolladores.
Publicado: 10/05/2011 1:41 am
La cuestión es que en local me funciona bien, pero en el servidor remoto no me muestra la url acortada. Los dos funcionan con php 5. Alguna idea???
Publicado: 29/05/2011 4:47 pm
[…] Si queremos hacer esta labor de acotar una url desde servidor con un lenguaje PHP tenemos un claro ejemplo en el blog de blog.unijimpe.net: Acortar urls con PHP y API bit.ly […]
Publicado: 30/10/2011 1:00 am
user y apikey son cosas privadas? puede ser negativo (influir en la seguridad) el que se vean en el código?
Publicado: 30/10/2011 1:05 am
Jose, el API Key se coloca en el cógido (Al igual que se coloca el usuario y clave de una base de datos MySQL) pero esta nunca la verá el usuario pues esta se utiliza para conectarse directamente al API y solo se verá la respuesta del servidor.
Publicado: 04/11/2011 6:15 pm
Lo comentaba, por que quería conjuntar el acortador bit.ly con Tweetmeme y este último requiere poner esos datos en javascript por lo que si se ven en el código final:
tweetmeme_source = 'twitter_username';
tweetmeme_service = 'bit.ly';
tweetmeme_service_api = 'bit.ly_username:bit.ly_api_key';