Las urls cortas pueden sernos de mucha utilidad en infinidad de casos, ya bien sea para publicar enlaces en redes sociales, enviarlos por el móvil, o incluso para nuestros scripts en php por el motivo que sea. Vamos a ver de forma simple como usar el api de goo.gl con php para poder acortar urls.
Si normalmente sueles acortar urls, o simplemente necesitas automatizar algún script que tienes hecho para que «comprima» las direcciones web de forma automática, vamos a ver una clase en PHP específicamente diseñada para utilizar el acortador de urls de google, goo.gl.
Gracias a lo fácil que nos lo ha puesto google, lo solucionaremos en un par de pasos, pero antes de nada tienes que saber que vas a necesitar tener una cuenta de Google Developer (gratis si tienes cualquier cuenta de google), y por ello vamos a ver cómo activar el api de googl en nuestra consola de desarrollador.
Cómo habilitar el api para acortar urls con google goo.gl
Lo primero será ir a la consola de desarrollador y desde ahí crear un proyecto con el nombre que queramos. Una vez que tengamos el proyecto creado, por ejemplo WEBSHORT entraremos en él y veremos a la izquierda un menú donde haremos click en APIs & auth.
En la siguiente página veremos una lista de todos los servicios que nos ofrece google como desarrolladores, y buscaremos URL Shortener API, o servicio para acortar URLs, le daremos al botón de la derecha para ponerlo en modo ON y que se quede activo. Una vez activo haremos click en Credenciales y después en crear nueva clave.
Nos saldrá un mensaje en el que elegiremos clave de servidor.
Y después introduciremos la IP de nuestro servidor (donde vamos a utilizar el script php, si es nuestro pc con un xampp entonces vamos a cualesmiip y ponemos la que nos aparezca ahí que será la de nuestro pc), y a partir de ese momento ya podremos empezar a mandar consultas desde nuestra ip o la de nuestro servidor con scripts php.
Recuerda que el límite de peticiones de forma gratuíta son 1.000.000 al mes, que quizás no las sobrepases pero tienes que saberlo por si tienes mucho volúmen de trabajo y deja de funcionarte.
Clase para acortar urls con el API de goo.gl y php
Esto ya es fácil, una vez tengamos nuestra clave de api pública (se genera y la veremos al seguir los pasos anteriores), simplemente tenemos que abrir el archivo php (o crear) en el que queramos poner el código. Lo ideal es que sea un archivo que se cargue en todas las páginas donde queremos usar la clase, en wordpress por ejemplo dentro de functions.php. Introduciremos la siguiente clase:
<?php class GoogleURL { private $apiURL = 'https://www.googleapis.com/urlshortener/v1/url'; function __construct($apiKey) { //creamos la url de solicitud con nuestra key pública $this->apiURL = $this->apiURL . '?key=' . $apiKey; } //convierte una url larga en una corta public function encode($url) { $data = $this->cURL($url, true); return isset($data->id) ? $data->id : '' ; } //convierte una url corta en la real (larga) public function decode($url) { $data = $this->cURL($url, false); return isset($data->longUrl) ? $data->longUrl : '' ; } //enviamos y recogemos los datos del api de google private function cURL($url, $post = true) { $ch = curl_init(); if ($post) { curl_setopt( $ch, CURLOPT_URL, $this->apiURL ); curl_setopt( $ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json') ); curl_setopt( $ch, CURLOPT_POST, true ); curl_setopt( $ch, CURLOPT_POSTFIELDS, json_encode(array('longUrl' => $url)) ); } else { curl_setopt( $ch, CURLOPT_URL, $this->apiURL . '&shortUrl=' . $url ); } curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false ); $json = curl_exec($ch); curl_close($ch); return (object) json_decode($json); } } ?>
Una vez tengamos listo el archivo que carga la clase, simplemente nos queda utilizarlo con los siguientes códigos:
<?php $api = new GoogleURL('CLAVE_API'); //ver url acortandola echo $api->encode('https://www.vichaunter.org'); //ver url real echo $api->decode('http://goo.gl/mbMv2X'); ?>
Por supuesto aquí es donde colocaremos nuestra clave de api. De esta forma tan sencilla podremos acortar las urls de forma automática, lo cual podemos usar tanto para nosotros en algún script privado, como si queremos integrarlo en nuestro foro o cms y así evitar spam y link juice.
¿Lo has probado? ¿Tienes algún otro método?
Ver comentarios (6)
Hola VicHaunter, he probado el codigo y me aparece el siguiente error:
Fatal error: Call to undefined function curl_init() in /.../classGoogleUrlShortener.php on line 30 . Me podrías ayudar informándome que ocurre y como arreglarlo ?
tienes que tener instalado el php_curl en el servidor, si es propio con ejecutar yum install php-curl o apg-get install php5-curl y luego reiniciar apache debería ser suficiente, pero depende de qué server tengas, si es un hospedaje web tendrías que pedirlo al que te provee el servicio.
Amigo como hago para que me convierta las URLs especificas ?
A qué te refieres?
Claro yo ocupo que me combiarta una url automaticamente ejemplo que $ruta sea la url donde entra y $acortado ya me dee el link cortado con goo.gl
Usalo de esta forma
encode($urllarga);
//ver url real
$urllarga = $api->decode($urlcorta);
?>