martes, 24 de febrero de 2015

Acortar URL en PHP con el API url shortener de Google



En este tip vamos a ver cómo acortar direcciones URL a través del API de Google en dos simples pasos. Primero activaremos el servicio en Google y obtendremos la clave necesaria para su uso, y a continuación programaremos dos sencillos scripts para echarlo a andar.

Lo primero que debemos hacer es disponer de una cuenta en Google y acceder al Área de Desarrolladores para conseguir nuestra API Key:

https://console.developers.google.com/project

En el menú "Proyectos", hacemos clic sobre "Crear Proyecto". En la pantalla emergente que nos aparece a continuación, introducimos el nombre que vamos a dar a nuestro proyecto y hacemos clic en "Crear".

Una vez creado el proyecto, accedemos al menú "APIs y autenticación" y a continuación "APIs" y buscamos "URL Shortener API".

En la siguiente pantalla, activamos el servicio. Dispondremos de un límite de 1.000.000 (un millón) de solicitudes diarias.

Una vez activado el servicio, y dentro del menú de la izquierda "APIs y autenticación", accedemos a "Credenciales" y a continuación hacemos clic en "Crear clave nueva" dentro "Acceso a API pública".

En la siguiente ventana emergente, seleccionamos "Clave de Servidor" e introducimos la IP del servidor (que podremos modificar más adelante) donde instalaremos el servicio.

Aceptamos y ya tenemos disponible nuestra API Key, del estilo:

AIzURixuB9d-deRq3_xIKUEYQoxUSTEz82osxYcTA


Con esta API Key, ya podemos programar nuestro servicio. Para ello vamos a crear dos páginas "acortador.php" (que se conectará al API de Google para acortar la URL) y "acortar.php" (que mostrará un formulario donde introduciremos la URL a  acortar).

acortar.php


<?php
include("acortador.php");
$api = new GoogleURL('AIzURixuB9d-deRq3_xIKUEYQoxUSTEz82osxYcTA');
if($_POST[url]!="")
{
$acortada=$api->encode($_POST[url]);
}
?>
<style>
body{font-family:arial;size:11px;}
input{border: solid 1px #BEBEBE;background-color:#ffffff;height:20px;padding-left:1%;padding-right:1%;font-family:'arial';}
</style>
<form name='formx2ac' method='post' action='acortar.php'>
Acortar URL: <input type='text' name='url' id='url'> <input type='submit' value='Acortar'><br>
</form>
<?php
if($acortada!="")
{
echo "<b>$acortada</b>";
}
?>




Como vemos, acortar.php no es más que un sencillo formulario que se envía a si mismo. Comprueba si ha sido introducida una URL y si es así, realiza una solicitud al API de Google:

$acortada=$api->encode($_POST[url]);


Recordad modificar el valor de esta variable, con el API Key obtenido en los pasos anteriores:
$api = new GoogleURL('AIzURixuB9d-deRq3_xIKUEYQoxUSTEz82osxYcTA');


almacenando el resultado en la variable "$acortada", que mostraremos a continuación.

acortador.php

<?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);
}
}

?>

Y ya estaría montado nuestro sistema para acortar URLs


Podéis obtener  más información en:
https://developers.google.com/url-shortener/

No hay comentarios:

Publicar un comentario