Ir al contenido principal

Acortador de URLs Goo.gl - API para PHP

S

i estamos interesados en utilizar en nuestras páginas un acortador de URLs, recomiendo utilizar el que nos proporciona google porque, además de ser corto (6 caracetres), nos proporciona estadísticas detalladas del uso de cada enlace generado.

Para utilizar su API existe un proyecto llamado googl-php que incluye una clase muy fácil de usar con la que podremos tanto acortar como expandir URLs con el acortador Goo.gl de Google.

El proyecto se puede ver en su página de Google code y también os dejo un enlace a la clase googl.class

Para utilizar esta clase debemos obtener nuestra clave de API de Google. Para conseguirla debemos acudir al siguiente enlace.

Si, como a mí, la función shorten os da error, podeís modificarla por la siguiente:

//This is the URL you want to shorten
$longUrl = 'http://www.example.com';
$apiKey = 'your_api_key_here';
//Get API key from : http://code.google.com/apis/console/

$postData = array('longUrl' => $longUrl, 'key' => $apiKey);
$jsonData = json_encode($postData);

$curlObj = curl_init();

curl_setopt($curlObj, CURLOPT_URL, 'https://www.googleapis.com/urlshortener/v1/url');
curl_setopt($curlObj, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curlObj, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curlObj, CURLOPT_HEADER, 0);
curl_setopt($curlObj, CURLOPT_HTTPHEADER, array('Content-type:application/json'));
curl_setopt($curlObj, CURLOPT_POST, 1);
curl_setopt($curlObj, CURLOPT_POSTFIELDS, $jsonData);

$response = curl_exec($curlObj);

//change the response json string to object
$json = json_decode($response);

curl_close($curlObj);

return $json->id;

Os recuerdo que la respuesta JSON que devuelve la API es:

{
"kind": "urlshortener#url",
"id": "http://goo.gl/lBfOH",
"longUrl": "https://www.packtpub.com/php-jquery-cookbook-to-create-interactive-web-applications/book"
}

Comentarios

  1. Excelente artículo, pero una pregunta:
    ¿Es posible que las URLs que vas acortando con el script pasen a la lista de url cortadas?
    Es decir, si uno va a http://goo.gl e inicia sesión, todas las URLs acortadas se quedan en una sóla lista, indicando con ello las estadísticas (clicks y todo ello) de cada link.
    Lo pregunto porque implementé un shortcode (bueno, hice un pequeño plugin) en mi blog WordPress y quiero que al momento de insertar un recurso externo (es decir, código fuente en Dropbox u otro), automáticamente acorte la URL (eso hasta el momento me va a la perfección) Y LA INGRESE a mi cuenta para sacar las estadísticas.
    Y ¿es necesario un token OAuth para poder hacer eso?
    Gracias por la respuesta.

    ResponderEliminar
  2. Hola Bryan,

    la verdad que hace tiempo que no lo uso, pero creo recordar que no, porque aunque utilices tu API Key, realmente no estás usando tu cuenta de Google, por lo que no quedan registradas entre tus estadísticas.

    No sé si alguien que esté más puesto en ello te podría ayudar más.. y si encuentras algún tipo de información extra no dudes en compartirlo!!

    ResponderEliminar
  3. No encontré ninguna solución como la que deseo. Pero estaba pensando en cURL. La pregunta es cómo. Cuando vea modos lo comparto :)

    ResponderEliminar
  4. Buen artículo, pero yo estoy creando el mío propio, te lo recomiendo ya que además publicará automáticamente en Directorios y además agregará SEO al enlace.
    Lo dejaré público y GRATIS, es decir, cualquiera lo podrá usar -> SIGUEW . COM

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

Refrescar página web automáticamente con PHP

Cuando necesitamos refrescar nuestra página web automáticamente cada cierto tiempo, lo primero que se nos ocurre es utilizar una función en JavaScript, pero debemos saber que también lo podemos hacer con código PHP.La función de refresco de página en PHP es muy sencilla, por lo que pasamos a verla directamente:$self = $_SERVER['PHP_SELF']; //Obtenemos la página en la que nos encontramos
header("refresh:300; url=$self"); //Refrescamos cada 300 segundos Nota: 300 segundos = 5 minutos (para que los veáis más claramente).

Montar USB en Ubuntu (Server) modo consola

Si nuestro Linux no es capaz de reconocer nuestro pendrive o nuestro SO no dispone de entorno gráfico, como puede ser en el caso de que utilizemos un Server, nos vemos obligados a montar el USB de forma manual, en este caso con Ubuntu.
Dado que los pendrives son montados como unidades de almacenamiento masivo y como si se tratasen de unidades scsi, el usb será nombrado con la tipología "sdxX" donde x (puede ser a,b,c,d) será el canal donde está conectado y X (1,2,3,4,5....) será el numero de dispositivo, cabe destacar que en algunas distribuciones no es necesario el uso del numero de dispositivo X como en slackware (y slamd64).
Podemos ver las unidades disponibles con:
$ ls /dev/sd*
Aunque tal vez sea más conveniente ejecutar el comando:
$ls -l /dev/sd*
Para ver qué dispositivos se encuentran actualmente en uso
nos mostrará las unidades que se encuentran disponibles. Ahora debemos crear una carpeta para montar el usb:
#mkdir /media/usb
y ejecutamos la siguiente instrucción para mont…

Crear firewall con IpTables en Linux (Ubuntu Server)

Si no disponemos de un hardware firewall pero queremos montar uno para proteger nuestro ordenador o servidor, podemos usar un software que nos proporciona Linux y es bastante potente llamado IpTables.
Para usar IpTables en Ubuntu debemos de crear un fichero dentro del directorio /etc/init.d/ al que podemos dar cualquier nombre, aunque os recomiendo poner algo descriptivo como “iptables.cf”. Dentro de este archivo tendremos todas las reglas que queremos aplicar darle una protección extra a nuestro Ubuntu.
Un ejemplo de un fichero de configuración de IpTables es el siguiente:

## Vaciamos las reglas
iptables -F
iptables -X
iptables -t nat -F

## Establecemos politicas predeterminada
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT

# Aceptamos todo de localhost
/sbin/iptables -A INPUT -i lo -j ACCEPT

# A nuestra IP le dejamos todo
iptables -A INPUT -s 192.168.2.1 -j ACCEPT

# A otra ip int…