Solución de problemas de autorización de URL del Google Maps APIs Premium Plan

Los ID de cliente del Google Maps APIs Premium Plan se restringen a URL específicamente autorizadas. Si intentas usar tu ID de cliente en una URL no autorizada, recibirás un mensaje de error.

Este artículo está orientado a clientes del Google Maps APIs Premium Plan que experimentan este problema y tienen que encontrar la URL exacta que se debe autorizar.

Conceptos básicos

Para evitar que otros usen tu ID de cliente en su sitio web, el uso de tu ID de cliente se limita a una lista de URL que debes autorizar. Cada URL puede tener la misma especificidad que una única página web o ser tan genérica como un dominio entero.

Para obtener una lista de tus URL autorizadas o para autorizar otras URL:

  1. Accede al Google Cloud Support Portal.
  2. En el menú lateral izquierdo, haz clic en Maps: Manage Client ID.

Puedes agregar hasta 100 URL al mismo tiempo. En total, puedes agregar 3000. Si necesitas agregar más, comunícate con el Google Cloud Support.

Podrás obtener más información sobre la autorización de URL en la guía del desarrollador.

El problema

Una aplicación que reside en una URL no autorizada para tu ID de cliente no podrá usar las Google Maps APIs con tu ID de cliente. Un usuario que intente usar dicha aplicación recibirá un mensaje de error, según la API específica que la aplicación intente cargar. Los usuarios no podrán usar funciones que dependan de la Google Maps JavaScript API.

  • La Google Maps JavaScript API mostrará este mensaje:

    Esta página no pudo mostrar un elemento de Google Maps. Esta URL no tiene autorización para usar el ID de cliente de Google Maps proporcionado. Error Code: UnauthorizedURLForClientIdMapError

  • Si usas la Google Maps JavaScript API v3.18 o una anterior, se mostrará este mensaje:

    Google ha inhabilitado el uso de la Google Maps APIs para esta aplicación. Este sitio no tiene autorización para usar el ID de cliente de Google Maps proporcionado. Si eres el propietario de esta aplicación, puedes obtener más información acerca de cómo registrar las URL en la guía del desarrollador.

La eliminación del ID de cliente de la aplicación no es una corrección válida*. Al hacerlo, perderás todos los privilegios del Google Maps APIs Premium Plan para esa aplicación. Esto significa que no tendrás derecho a:

  • un buen acuerdo de nivel de servicio (SLA);
  • atención al cliente;
  • mayores límites para servicios web;
  • términos y condiciones de calidad comercial;
  • asistencia para aplicaciones de intranet en tu entorno de trabajo.

Esto significa que las aplicaciones que son solo internas o no son gratuitas y no usan de manera correcta un ID válido de cliente de las Google Maps APIs Premium Plan no cumplirán con las Condiciones de servicio gratuitas de las Google Maps APIs.

La solución

La solución correcta para esto consiste en encontrar y autorizar las URL correctas para usar tu ID de cliente.

En la mayoría de los casos, debes autorizar una aplicación para usar tu ID de cliente. A menudo, las aplicaciones usan varias URL que comparten un patrón común; p. ej., un localizador de tiendas puede alojarse en example.com/stores o en stores.example.com. Debes encontrar una URL que coincida con todas las URL que usa tu aplicación.

Nota: La autorización de www.example.com no autorizará stores.example.com ni ningún otro subdominio de example.com.

Cada URL que autorices puede tener la misma especificidad como una única página web o ser tan genérica como un dominio entero, incluidos sus subdominios. Para obtener más información, consulta la guía del desarrollador. Recomendamos autorizar las URL que coinciden con un conjunto bastante amplio o con las URL, mientras las administres.

Nota: Recomendamos no autorizar un dominio completo, a menos que tu organización tenga un control total sobre todo el contenido de ese dominio. Por ejemplo, autorizar el dominio blogspot.com completo permite que todos usen tu ID de cliente (a costa tuya) desde ese dominio. Sin embargo, te convendrá autorizar solo un blog específico (p. ej. googlegeodevelopers.blogspot.com) o incluso una página específica en ese blog.

Cómo encontrar la URL correcta

Por lo general, encontrarás la URL en la barra de ubicación de tu navegador. En sitios web públicos que no usan etiquetas <iframe>, esto generalmente es sencillo. Si tienes dudas, puedes usar el enfoque que aparece a continuación, para que te ayude a verificarlo.

Las aplicaciones complejas pueden cargar las Google Maps APIs desde una URL que no sea la que se encuentra en la barra de ubicación del usuario. Esto mismo sucederá con las etiquetas <iframe> o cuando se genere la URL de la página que cargue las API de manera dinámica en el servidor y luego se envíe al navegador. Para encontrar las URL correctas en estos casos se deben inspeccionar determinadas solicitudes HTTP del navegador a servidores de Google.

La URL que debe autorizarse es la que se encuentra en el encabezado Referer para las solicitudes que el navegador envía a Google a fin de cargar la API. Cada API se carga desde una URL diferente:

Todas las solicitudes a maps.googleapis.com se pueden enviar a maps.google.com o maps-api-ssl.google.com según la manera en que se configure la aplicación para cargar la API. Por lo tanto, al buscar las solicitudes anteriores, lo que importa en general es la ruta de acceso (en negrita).

Captura en los encabezados HTTP de tu navegador

Para poder inspeccionar el encabezado de Referer de las solicitudes anteriores, primero debes capturarlos en tu navegador. Se encuentran disponibles de manera gratuita varias herramientas para capturar los encabezados HTTP en todos los navegadores principales:

Nota: Tienes que configurar Fiddler2 para capturar el tráfico HTTPS. Aquí podrás obtener información detallada.

Si no puedes capturar encabezados HTTP directamente en el navegador, puedes intentar capturar el tráfico HTTP usando un analizador de protocolo de red como Wireshark. Esta herramienta puede ser más compleja que las anteriores. Consulta algunos instructivos de Wireshark en la Web si no estás familiarizado con él.

Una vez que tengas la herramienta que elijas, sigue estos pasos para encontrar la URL que debe autorizarse:

  1. Inicia la herramienta de captura. Asegúrate de que capture las solicitudes HTTP de tu navegador.
  2. Orienta tu navegador a la aplicación que no pueda cargar la Google Maps APIs usando tu ID de cliente. Recibirás uno de los mensajes de error antes descrito.
  3. Detén la captura de tráfico HTTP. Esto facilita la inspección del tráfico capturado.
  4. Encuentra la solicitud que intenta cargar la Google Maps APIs usando tu ID de cliente. Por ejemplo, si tu aplicación intenta cargar la Google Maps JavaScript API, busca una solicitud como la siguiente:
    GET /maps/api/js?client=gme-yourclientid HTTP/1.1
  5. Los encabezados de solicitud HTTP aparecen de inmediato después de esa línea, sin saltos de línea. Encuentra uno como el siguiente:
    Referer: http://www.example.com/stores/find?zip=94043
  6. La URL de esa línea es la que se debe autorizar para usar tu ID de cliente.

Desde la consola de JavaScript de tu navegador

Si usas tu clave de API o ID de cliente en un sitio que no esté autorizado, la Google Maps JavaScript API exhibirá mensajes de error en window.console. Puedes encontrar la URL correcta en el mensaje de error. En la consola, busca mensajes de error como este:

Google Maps APIs error: UnauthorizedURLForClientIdMapError ...
Your site URL to be authorized: http://www.example.com/stores/find?zip-94043

Para obtener ayuda en la búsqueda de mensajes de error, consulta la sección sobre verificación de errores en tu navegador.

Encontrar el patrón común

Para asegurarte de que toda la aplicación pueda cargar las Google Maps APIs usando tu ID de cliente, debes encontrar un patrón común en todas las URL que la aplicación use y autorizar una que lo represente, siguiendo las reglas detalladas en la guía del desarrollador.

A menudo, esto se limita simplemente a un directorio (p. ej. example.com/stores), o un subdominio (p. ej. stores.example.com. A menudo, la deducción puede realizarse fácilmente con solo un par de URL.

Cuando trabajes con aplicaciones complejas, es posible que debas repetir los pasos anteriores con varias URL para el usuario en las que se muestra un mapa. Sin embargo, esto puede requerir mucho trabajo y aun así dar como resultado un conjunto incompleto de URL. Para dicha aplicación, sus desarrolladores estarán en la mejor posición para proporcionar el patrón de URL.