Résolution des problèmes d'autorisation des URL Google Maps APIs Premium Plan

Les ID client Google Maps APIs Premium Plan sont limités aux URL qui ont été spécialement autorisées. Si vous essayez d'utiliser votre ID client dans une URL qui n'a pas été autorisée, vous recevrez un message d'erreur.

Cet article est destiné aux clients Google Maps APIs Premium Plan qui rencontrent ce problème et doivent trouver l'URL exacte qui doit être autorisée.

Aspects fondamentaux

Afin d'empêcher des tierces parties d'utiliser votre ID client sur leur propre site Web, l'utilisation de votre ID client est limitée à une liste d'URL que vous devez autoriser. Chaque URL peut être aussi spécifique qu'une simple page Web ou aussi générique qu'un domaine entier.

Pour obtenir la liste de vos URL autorisées, ou pour autoriser d'autres URL :

  1. Connectez-vous au Google Cloud Support Portal.
  2. Dans le menu de gauche, cliquez sur Maps: Manage Client ID.

Vous pouvez ajouter jusqu'à 100 URL à la fois et jusqu'à un total de 3 000 URL. Pour des limites plus élevées, contactez Google Cloud Support.

Vous trouverez plus d'informations sur l'autorisation des URL dans le guide du développeur.

Le problème

Une application qui réside sur une URL qui n'a pas été autorisée pour votre ID client ne pourra pas utiliser les Google Maps APIs avec votre ID client. Un utilisateur qui tente d'utiliser une telle application recevra un message d'erreur, selon l'API spécifique que l'application essaye de charger. La conséquence directe est que les utilisateurs ne pourront pas utiliser les fonctionnalités qui dépendent des Google Maps JavaScript API.

  • Google Maps JavaScript API affichera ce message :

    Cette page n'a pas pu afficher d'élément Google Maps. Cette URL n'est pas autorisée à utiliser l'ID client Google Maps fourni. Error Code: UnauthorizedURLForClientIdMapError

  • Si vous utilisez Google Maps JavaScript API version 3.18 ou antérieure, le message suivant s'affichera :

    Google a désactivé l'utilisation des Google Maps APIs pour cette application. Ce site n'est pas autorisé à utiliser l'ID client Google Maps fourni. Si vous êtes propriétaire de cette application, vous trouverez plus d'informations sur l'enregistrement des URL dans le guide du développeur.

Supprimer l'ID client de l'application n'est généralement pas une solution valable.* En procédant ainsi, vous perdrez tous les privilèges du Google Maps APIs Premium Plan pour cette application. Cela signifie que vous n'aurez plus droit à :

  • Un contrat de niveau de service (SLA) solide.
  • Un support client.
  • Des limites accrues sur les services Web.
  • Des conditions générales de niveau commercial.
  • Un support des applications Intranet au sein de votre espace de travail.

Cela signifie que les applications qui sont uniquement internes ou non gratuites et qui n'utilisent pas correctement un ID client Google Maps APIs Premium Plan valide ne seront pas conformes aux Conditions de service des Google Maps APIs gratuites.

La solution

La meilleure solution est de trouver les bonnes URL et de les autoriser à utiliser votre ID client.

Dans la plupart des cas, vous devez autoriser une application à utiliser votre ID client. Les applications utilisent souvent plusieurs URL qui partagent un schéma commun. Un localisateur de magasin, par exemple, peut utiliser l'URL exemple.com/magasins ou magasins.exemple.com. Vous devez trouver une URL qui correspond à toutes les URL que votre application utilise.

Remarque : Autoriser www.exemple.com ne permettra pas d'autoriser magasins.exemple.com ou tout autre sous-domaine de exemple.com.

Chaque URL que vous autorisez peut être aussi spécifique qu'une simple page Web ou aussi générique qu'un domaine entier, avec tous ses sous-domaines. Pour plus d'informations, voir le guide du développeur. Nous vous recommandons d'autoriser des URL qui correspondent à un ensemble assez large d'URL, tant que vous les administrez.

Remarque : Nous vous déconseillons d'autoriser un domaine complet sauf si votre organisation exerce un contrôle total sur l'ensemble du contenu de ce domaine. Par exemple, en autorisant le domaine complet blogspot.com, vous permettriez à tout le monde d'utiliser votre ID client, à vos frais, depuis ce domaine. Vous devez plutôt autoriser un blog précis uniquement, comme googlegeodevelopers.blogspot.com, voire même une page spécifique de ce blog.

Comment trouver la bonne URL

L'URL se trouve normalement dans la barre d'adresse de votre navigateur. Sur les sites Web publics qui n'utilisent pas de balises <iframe>, c'est en général assez facile. En cas de doute, vous pouvez utiliser l'approche ci-dessous pour vérification.

Les applications complexes peuvent charger les Google Maps APIs à partir d'une URL différente de celle figurant dans la barre d'adresse de l'utilisateur. C'est le cas avec les balises <iframe> ou lorsque l'URL de la page qui charge les API est générée dynamiquement sur le serveur avant d'être envoyée au navigateur. Dans ce cas, la recherche des URL adéquates nécessite d'inspecter certaines requêtes HTTP du navigateur vers les serveurs Google.

L'URL qui doit être autorisée est celle se trouvant dans l'en-tête Referer pour les requêtes que le navigateur envoie à Google pour charger l'API. Chaque API est chargée à partir d'une URL distincte :

Toutes les requêtes vers maps.googleapis.com peuvent être envoyées à maps.google.com ou maps-api-ssl.google.com selon la manière dont l'application est configurée pour charger l'API. Par conséquent, pour rechercher les requêtes ci-dessus, c'est généralement le chemin d'accès (en gras) qui est important.

À partir des en-têtes HTTP de votre navigateur

Pour pouvoir inspecter l'en-tête Referer dans les requêtes ci-dessus, vous devez d'abord les enregistrer dans votre navigateur. Plusieurs outils sont disponibles gratuitement pour enregistrer des en-têtes HTTP dans les principaux navigateurs :

Remarque : Vous devez configurer Fiddler2 pour pouvoir enregistrer le trafic HTTPS. Voir les détails ici.

Si vous ne parvenez pas à enregistrer des en-têtes HTTP directement dans le navigateur, vous pouvez essayer d'enregistrer le trafic HTTP à l'aide d'un outil d'analyse de protocole réseau tel que Wireshark. Cet outil est plus complexe à manipuler que les outils énoncés précédemment, aussi n'hésitez pas à consulter quelques didacticiels Wireshark sur le Web pour vous familiariser avec cet outil.

Après avoir choisi votre outil, procédez comme suit pour trouver l'URL à autoriser :

  1. Démarrez l'outil d'enregistrement. Vérifiez qu'il enregistre bien les requêtes HTTP provenant de votre navigateur.
  2. Dirigez votre navigateur vers l'application qui ne parvient pas à charger Google Maps APIs à l'aide de votre ID client. Vous devriez recevoir l'un des messages d'erreur décrits ci-dessus.
  3. Arrêtez l'enregistrement du trafic HTTP. Cela facilite l'analyse du trafic enregistré.
  4. Trouvez la requête qui essaye de charger Google Maps APIs à l'aide de votre ID client. Par exemple, si votre application essaye de charger Google Maps JavaScript API, recherchez une requête de type :
    GET /maps/api/js?client=gme-yourclientid HTTP/1.1
  5. Les en-têtes de requêtes HTTP se trouvent juste après cette ligne, sans saut de ligne. Recherchez-en une de type :
    Referer: http://www.example.com/stores/find?zip=94043
  6. L'URL de cette ligne est celle qui doit être autorisée à utiliser votre ID client.

À partir de la Console JavaScript dans votre navigateur

Si vous utilisez votre clé d'API ou votre ID client dans un site qui n'est pas autorisé, Google Maps JavaScript API écrit des messages d'erreur dans window.console. L'URL appropriée se trouve dans le message d'erreur. Dans la console, recherchez les messages d'erreur de type :

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

Pour en savoir plus sur l'identification des messages d'erreur, voir la section sur la vérification des erreurs dans le navigateur.

Trouver le schéma commun

Pour s'assurer que toute l'application pourra charger Google Maps APIs à l'aide de votre ID client, vous devez trouver le schéma commun à toutes les URL que l'application utilise et autoriser une URL qui représente ce schéma, en suivant les règles expliquées dans le guide du développeur.

Il s'agit souvent simplement d'un répertoire (ex. exemple.com/magasins), ou d'un sous-domaine (ex. magasins.exemple.com — que l'on peut trouver facilement à partir de quelques URL.

Dans le cas d'applications complexes, il peut être nécessaire de répéter les étapes ci-dessus avec quelques URL destinées aux utilisateurs qui affichent une carte. Cela peut toutefois s'avérer très fastidieux et aboutir à un jeu d'URL incomplet. Pour ce type d'application, ce sont probablement leurs développeurs qui sont les mieux à même de fournir le schéma d'URL.