2016-12-19 4 views
0

J'essaie d'utiliser l'API Google Maps pour obtenir l'emplacement, et par la suite les lieux à proximité.Impossible d'authentifier la demande. La «signature» fournie n'est pas valide pour l'ID client fourni. Java, Camel, Google Maps API, Signature, Géocode

J'envoie l'URL codée à l'API, par exemple, si je recherche "Las Vegas, Nevada", l'URL envoyée à l'API est: https://maps.googleapis.com/maps/api/geocode/json?address=Las+Vegas%2C+Nevada&client=gme-XXXXXXXXXX&signature=xxxxxxxxxxxxx.

Ici, clientId est fixe et ne change pas, mais la signature est générée sur la base de l'adresse « Las Vegas +% 2C + Nevada », ou tout ce qui est recherché.

Notez que dans l'URL, le mot-clé, écrit en tant qu'adresse, est codé en UTF-8 (espace remplacé par '+' et virgule par '% 2C').

Cependant, l'URL pour laquelle l'API effectue la recherche après la demande est envoyée est: https://maps.googleapis.com/maps/api/geocode/json?address=Las+Vegas,+Nevada&client=gme-XXXXXXXXXX&signature=zzzzzzzzzzzzz. Notez que les espaces sont toujours codés en tant que '+' mais qu'une virgule est présente dans cette URL au lieu de '% 2C', ce qui entraîne la génération d'une signature différente par l'API, car la signature est générée sur la base d'adresse. Je reçois l'erreur suivante à cause de cela.

« Impossible d'authentifier la demande fourni « signature » est non valide pour l'ID client fourni, ou fourni « client »n'est pas valide Le. signature a été vérifiée par rapport à l'URL:/maps/api/geocode/json? adresse = Las + Vegas, + Nevada & clientID = gme-XXXXXXXXXX & signature = zzzzzzzzzzzzz Si cela ne correspond pas à l'URL que vous avez demandée, assurez-vous que votre La requête est encodée correctement dans l'URL En savoir plus: developers.google.com/maps/documentation/business/webservices/auth "

Pourquoi la virgule n'est-elle pas codée dans l'URL utilisée par Maps API?

Et est-il possible de résoudre ce problème?

Répondre

0

simplement envelopper chaque paramater dans les domaines suivants

URLEncoder.encode(VARIABLE_NAME, "UTF-8") 

, qui peut provoquer à envoyer « url en toute sécurité »!

Exemple:

URL url = new URL("https://maps.googleapis.com/maps/api/geocode/json?address=" + URLEncoder.encode("Las Vegas, Nevada", "UTF-8") + &client=gme-XXXXXXXXXX&signature=xxxxxxxxxxxxx");