Apparemment, je n'ai pas besoin d'une "clé API de carte" pour utiliser "l'API de géocodage de Google" selon:
http://code.google.com/apis/maps/documentation/geocoding/index.html
Cependant, j'obtiens ceci:
{
"status": "REQUEST_DENIED",
"results": [ ]
}
Est-ce que cela signifie que mon adresse IP est bloquée? Que puis-je faire pour surmonter cela?
Jusqu'à la fin de 2014, une source commune de cette erreur omettait le paramètre obligatoire sensor
de la demande, comme ci-dessous. Cependant, à compter du 2014/12/31 ou plus tôt, ce n'est plus nécessaire:
Le paramètre du capteur
L'API de Google Maps nécessitait auparavant d'inclure le paramètre de capteur pour indiquer si votre application utilisait un capteur pour déterminer l'emplacement de l'utilisateur. Ce paramètre n'est plus requis.
Avez-vous spécifié le paramètre sensor
dans la demande?
"REQUEST_DENIED" indique que votre demande a été refusée, généralement à cause de l'absence d'un paramètre de capteur.
sensor (requis) - Indique si la demande de géocodage provient ou non d'un périphérique doté d'un capteur de localisation. Cette valeur doit être vraie ou fausse
SUPPRIMEZ LE PARAMÈTRE D'APIKEY ET SA VALEUR
par exemple. https://maps.googleapis.com/maps/api/geocode/json?address=[YOUR ADDRESS]&sensor=true
J'ai constaté que dans mon cas, l'appel au service sans protocole sécurisé (ce qui signifie: http), après l'ajout de la clé = API_KEY , était à l'origine de ce problème . Le passage à https l'a résolu.
Si vous ne faites que copier et coller l'URL d'exemple fournie par Google sur leur site Web http://maps.google.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+ CA & sensor = true_or_false Il échouera à cause du mauvais paramètre du capteur. Vous devriez le changer en vrai ou en faux et non pas celui qu'ils ont écrit ... C'est peut-être l'erreur que vous avez eue, comme cela m'est arrivé ...
J'ai remarqué que vous obtenez également REQUEST_DENIED pour certaines adresses si vous n'encodez pas correctement votre adresse URL. Par exemple, dans
123 Main St #B, Mytown, CA 94110
le caractère '#' doit être codé comme% 23
Pour ceux qui regardent cette page en 2017 ou au-delà, comme moi
Le capteur n'est plus requis, j'ai essayé et j'ai eu l'erreur:
Je devais juste activer mon API de Google Maps Geocoding , qui semble être nécessaire de nos jours.
J'espère que ça aide quelqu'un comme moi.
J'ai eu ce problème et j'ai réalisé que je supposais que le géocodage était livré avec l'API de cartes JS. Cependant, il s'agit d'une API distincte que je n'avais pas activée dans la console cloud. L'activer l'a corrigé tout de suite.
C'est nul Google ne vous laisse pas que votre service n'est pas activé par ce compte. Essayez d'abord de l'activer . Allez ici https://console.developers.google.com/project Et créez un nouveau projet avec le service de lieu activé pour résoudre votre problème.
Pour les personnes aux prises avec ce problème, je viens de découvrir que l’API de géocodage ne peut pas être utilisée avec des clés d’API ayant des restrictions de référent. Supprimez simplement toutes vos restrictions de référent et vous devriez être bon.
Si vous utilisez d'autres API autorisant des clés avec des restrictions de référent (telles que l'API JS de Maps), il est probablement préférable de créer une 2ème clé sans restrictions à utiliser exclusivement pour le géocodage, car d'autres API peuvent afficher votre clé publiquement et par quelqu'un les autres pourraient commencer à l'utiliser sur leur propre site.
J'ai aussi eu ce problème en utilisant le module drupal 7 Location. Le remplissage automatique de tous les emplacements vides a entraîné cette erreur. L’exécution manuelle d’une des requêtes vers l’API d’emplacement a entraîné cette erreur dans le code JSON renvoyé:
"Les clés de l'API du navigateur ne peuvent pas avoir de restrictions de référencement lorsqu'elles sont utilisées avec cette API."
La résolution du problème était alors simple: créez une nouvelle clé sans aucune restriction et utilisez-la uniquement pour le géocodage.
Remarque pour ceux qui découvrent les clés API Google: par restrictions, cela signifie que les demandes utilisant une clé API s'appliquent à des domaines/sous-domaines spécifiques. (Par exemple, seules les demandes de http://votredomaine.com sont autorisées).
Comme vous le dites, cela peut signifier que votre adresse IP a été bloquée. Je m'assurerais que vous spécifiez le paramètre key sur la chaîne de requête pour la demande d'API de géocodage.
https://maps.googleapis.com/maps/api/geocode/xml?sensor=false&address=Placename&key=XXxxxXXxXxxxxXXxx
Assurez-vous également que si vous avez configuré les restrictions d'adresse IP dans la console du développeur, vous avez autorisé l'adresse IP correcte. Cliquez simplement sur le projet dans la liste pour afficher les adresses IP autorisées.
Si vous rencontrez toujours des problèmes, vous pouvez envisager d’imprimer les valeurs des éléments status
et error_message
à partir de la réponse de Google. Vous verrez à peu près ceci:
REQUEST_DENIED - This IP, site or mobile application is not authorized to use this API key. Request received from IP address 123.4.5.678, with empty referer
S'il ne mentionne pas de restriction d'adresse IP, il est possible que Google trouve une solution au problème avec un correctif.
Google renvoie un message d'erreur très utile, qui aide à corriger le problème!
Dim Request As New XMLHTTP30
Dim Results As New DOMDocument30
Dim StatusNode As IXMLDOMNode
Request.Open "GET", "https://maps.googleapis.com/maps/api/geocode/xml?" _
& "&address=xxx", False
Request.Send
Results.LoadXML Request.responseText
Set StatusNode = Results.SelectSingleNode("//status")
Select Case UCase(StatusNode.Text)
Case "REQUEST_DENIED"
Debug.Print StatusNode.NextSibling.nodeTypedValue
...
Exemples de messages d'erreur
Message 1: Les demandes adressées à cette API doivent être sur SSL. Chargez l'API avec "https: //" Au lieu de "http: //".
Message 2: Demande refusée par le serveur: vous devez utiliser une clé API pour authentifier chaque demande auprès des API de la plateforme Google Maps. Pour plus d'informations, s'il vous plaît ...