Martes, 18 de Septiembre de 2007 por
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.





Interesante tu post. Pero podrias ayudarme donde encontrar, o si te puedes dar el tiempo y explicar como conseguir un API key, para que sirve? tengo entendido que tiene relación con los sitemap. Necesito crear un site map, encontre http://www.freesitemapgenerator.com ; ahi me pide el API key, aunque veo que es opcional pero supongo que debe ser mejor. Podrias ayudarme en el tema?
Por otro lado veo que uno de los problemas de los marketeros y de webmaster es generar claves y administrarlos. Te recomiendo a ojo cerrado el mejor programa, yo lo uso, me ahorra tiempo y me evita perder u olvidar claves. De pronto te interese la version en español: http://www.roboform.com/php/land.php?affid=nefox&frm=frame35
ES GRATIS por 30 dias PRUEBALO!! No pierdes nada. Si no te gusta lo desinstalas.
En la propia web que comentas aparece la explicación de lo que es la API Key y cómo conseguirla y para qué la usan. Sirve en realidad para acceder a los servicios de Google a través de sus APIs.
FAQ: http://www.freesitemapgenerator.com/faq.html#faq11
API Key: http://code.google.com/apis/ajaxsearch/signup.html
La API key se genera por dominio, una para cada uno.
Es genial funciona correctamente y me ha venido de perlas pero me sale en la página un texto que pone: supongo que se pude quitar ¿no?
Pone esto: “load the Ajax loader w/o API key” no se porque no ha salido antes
Olvidarlo no he dicho nada, soy un zoquete. Lo dicho felicidades por el script