Cambio dinámico de Google API Key

Todo el que haya usado las APIs de Google sabrá que hace falta una API Key para poder usarlas. Esto en principio no es un gran inconveniente pero es realmente molesto que haya que generar una clave por cada dominio que queramos usar, ya que a veces publicamos páginas en más de un dominio a la vez.

Si la página es dinámica, no hay mayor problema: se mira el dominio en alguna variable del servidor que seguro que está a nuestro alcance y se selecciona la API Key correspondiente para usarla en el HTML generado. Hasta aquí ningún problema, pero ¿qué ocurre cuando son páginas estáticas solamente? Pues la cosa se complica.

La primera solución que he probado era usar el DOM para crear un elemento script y meterlo directamente en el head de la página, seleccionando la clave usando document.domain, pero esto no ha resultado: en Internet Explorer no había manera de hacerlo funcionar. No se reconocen las funciones que carga el Javascript de Google internamente. Un desastre….

Pero luego buscando por ahí he descubierto el AJAX API, con lo que se pueden cargar todas las APIs de Google vía código. Y luego buscando por los foros, una función no documentada: .ApiKey, que permite seleccionar la clave a posteriori. Así que ya lo tenía todo y me he puesto manos a la obra:

var key = '';

switch(document.domain)
{
    case 'www.dominio1.com':
        key = 'ABQIAA....';
        break;
    case 'www.dominio1.biz':
        key = 'ABQIAB....';
        break;
}

google.loader.ApiKey = key;
google.loader.KeyVerified = true;   // por asegurarnos
google.loader.LoadFailure = false;  // por asegurarnos

google.load("maps", "2.X");

google.setOnLoadCallback(load);

Primero se selecciona la clave a través de un simple switch y luego se carga la API usando .load. Finalmente se llama a .setOnLoadCallback() indicando la función que se llamará cuando termine la carga de los datos.

Y básicamente eso es todo. Lo he probado en Mozilla y Explorer pero supongo que funcionará en algunos más porque usa código de Google que probablemente es mucho mejor que el mio. De todos modos, como usa una función no oficial de la API, es posible que esta técnica deje de funcionar en el futuro.

Si te ha gustado esta entrada, por favor deja un comentario o suscríbete al RSS para que puedas recibir todas las novedades en tu lector de feeds favorito.
This entry was posted in Programación and tagged , , , . Bookmark the permalink.

5 Responses to "Cambio dinámico de Google API Key"

Leave a reply