web-dev-qa-db-fra.com

Clé d'API Les clés d'API de navigateur ne peuvent pas avoir de restrictions de référencement lorsqu'elles sont utilisées avec cette API

J'essaie de programmer le géocodage. J'ai créé la clé API, mais lorsque je l'ajoute au code de mon site Web, je ne reçois rien. Cependant, lorsque je n'utilise pas d'API, tout fonctionne correctement. Quand j'envoie:

https://maps.googleapis.com/maps/api/geocode/json?address=".$adres."&key=KLUCZ_XXX

Je reçois une réponse:

Browser API keys cannot have referer restrictions when used with this API.

Si j'utilise:

https://maps.googleapis.com/maps/api/geocode/json?address=".$adres" 

Le résultat est correct mais le nombre de requêtes est limité par jour.

Contrainte de clé: références HTTP (Web) - définie sur le domaine à partir duquel la requête est conjuguée. L'interface API de géocodage de Google Maps est activée.

La clé API doit-elle être activée également ailleurs pour fonctionner?

27
Damian

On dirait que vous faites peut-être le côté serveur d’appel d’API. J'ai rencontré ce problème plus tôt aujourd'hui. Comme vous avez imposé une restriction sur le référent sur votre clé d’API, elle sera limitée à l’exécution sur le navigateur avec les API de service Web, y compris l’API de géocodage. Cela ne fonctionnait pas pour moi, même lorsque vous définissiez manuellement le référent dans les en-têtes de requête. Vous pouvez trouver les autres API de service Web sur cette page: https://developers.google.com/maps/web-services/

Important: Si vous utilisez l'une des API de service Web avec une clé d'API comportant des restrictions de référent, vos demandes échoueront avec le message d'erreur suivant: "Les clés d'API ne peuvent pas avoir de restrictions de référent lorsqu'elles sont utilisées avec cette API." Vous devez utiliser une restriction de serveur.

Vous voudrez créer une clé distincte à utiliser côté serveur. Vous pouvez modifier votre restriction d'une restriction browser à une restriction server en utilisant des adresses IP pour restreindre l'accès, au lieu des référents du navigateur.

Reportez-vous à cette section dans les API de cartes FAQ pour basculer du type de clé sur une clé restreinte du serveur: https://developers.google.com/maps/faq#switch-key-type

Vous pouvez également continuer à utiliser une clé de navigateur et un géocodage côté client (JavaScript), puis renvoyer le résultat au serveur via ajax.

47
Raymond

Si le géocodage côté serveur n’est pas une option, vous devez utiliser le géocodeur de l’API Google Javascript API . Vous pouvez définir des restrictions de référent HTTP sur cette API.

Google lui-même dit pour éviter l'API Geocoder non-Javascript pour le géocodage dynamique :

Ce service est généralement conçu pour le géocodage de données statiques (connu à l'avance) adresses pour le placement du contenu de l'application sur un carte; ce service n'est pas conçu pour répondre en temps réel à l'utilisateur contribution. Pour le géocodage dynamique (par exemple, dans un élément De l'interface utilisateur), consultez la documentation du client API JavaScript de Maps géocodeur et/ou les API de localisation des services Google Play.

0
Slash