miércoles, 26 de noviembre de 2014

Acortar urls con goo.gl desde PHP usando la API de Google

Acortar una url es algo bastante común hoy en día, sobretodo en las redes sociales como Twitter donde el número de caracteres es limitado.

Si lo queremos de hacer desde nuestra sitio web de PHP tenemos una forma muy sencilla con la API de Google.

Los pasos a dar serían los siguientes:

1. Lo primero que necesitaremos será darnos de alta una cuenta de Google Developer, que lo puedes hacer fácilmente si tienes una cuenta de Google.

2. Deberemos ir la la consola del desarrollador y dar de alta un nuevo proyecto. Le pondremos el nombre que deseemos y una vez creado iremos en el menú de la izquierda al ítem APIs & Auth (APIs y autenticación en español). Seleccionando APIs en el submenú veremos toda la lista de servicios que nos ofrece Google. Buscaremos URL Shortener API y lo activaremos desde la parte superior de la página. Hecho esto elegiremos en el submenú Credentials (Credenciales en español) y haremos clic en Crear clave nueva. Nos aparecerá una ventana emergente y seleccionaremos Clave de servidor. Ahí nos pedirá que pongamos una IP si queremos limitar desde donde se puede llamar al servicio. Con todo esto realizado ya nos dará la clave de la api que necesitaremos posteriormente para acortar la url.

3. El último paso será coger el código que os dejo a continuación y cambiar únicamente la clave de la api por la vuestra y la url por la que necesitéis.

Código PHP

Lo primero que veremos será la clase que implementa las funciones de acortar y expandir:

class GoogleShortUrl{
 
 // Constructor
 function __construct($key, $apiURL = 'https://www.googleapis.com/urlshortener/v1/url'){
  $this->apiURL = $apiURL.'?key='.$key;
 }
 
 // Acortar la URL
 function shorten($url) {
  $response = $this->send($url);
  return isset($response['id']) ? $response['id'] : false;
 }
 
 // Expandir la URL
 function expand($url) {
  $response = $this->send($url, false);
  return isset($response['longUrl']) ? $response['longUrl'] : false;
 }
 
 // Enviar información a Google
 function send($url, $shorten = true){

  // Inicializamos curl y definimos el objeto
  $curlObj = curl_init();
  if ($shorten){
   curl_setopt($curlObj, CURLOPT_URL, $this->apiURL);
   curl_setopt($curlObj, CURLOPT_POST, 1);
   curl_setopt($curlObj, CURLOPT_POSTFIELDS, json_encode(array("longUrl"=>$url)));
   curl_setopt($curlObj, CURLOPT_HTTPHEADER, array("Content-Type: application/json"));
  } else {
   curl_setopt($curlObj, CURLOPT_URL, $this->apiURL.'&shortUrl='.$url);
  }
  curl_setopt($curlObj, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($curlObj, CURLOPT_SSL_VERIFYPEER, 0);
  curl_setopt($curlObj, CURLOPT_HEADER, 0);
  
  // Ejecutamos el post
  $response = curl_exec($curlObj);

  // Cerramos la conexión
  curl_close($curlObj);
  
  // Devolvemos la respuesta
  return json_decode($response, true);
 }  
}

Ahora solamente nos queda hacer la llamada a la clase anterior y acortar o expandir una url:

// Creamos una instancia de la clase
$key = 'miclave';
$shorter = new GoogleShortUrl($key);

// Acortamos la URL
$shortname = $shorter->shorten("http://softontherocks.blogspot.com");
echo $shortname; // devuelve http://goo.gl/VF1HJ

// Expandimos la URL
$longname = $shorter->expand($shortname);
echo $longname; // devuelve http://softontherocks.blogspot.com

Espero que os sirva en vuestros proyectos.

No hay comentarios:

Publicar un comentario