带有 cURL 的 Google 地理编码 API 请求被拒绝。我有一个与启用计费的项目关联的 API 密钥
Posted
技术标签:
【中文标题】带有 cURL 的 Google 地理编码 API 请求被拒绝。我有一个与启用计费的项目关联的 API 密钥【英文标题】:Google Geocoding API request with cURL denied. I have an API key associated to a project with billing enabled 【发布时间】:2019-11-13 15:17:21 【问题描述】:我正在尝试通过以下方式访问 Google 的地理编码 API:
卷曲https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=XXX
我得到以下信息:
“error_message”:您必须使用 API 密钥来验证对 Google Maps Platform API 的每个请求。更多信息请参考http://g.co/dev/maps-no-account", “结果”: [], “状态”:“REQUEST_DENIED”
我传递的密钥与启用了地理编码和地点 API 的项目相关联,并且该项目也启用了计费。
【问题讨论】:
再次检查您的请求,出了点问题,它没有拿起您的钥匙。检查您的请求参数中的空格,您也可以尝试先输入密钥,但这没关系我怀疑您的地址中需要编码一些东西 请注意,这需要 Google Maps Platform 支持团队的进一步协助,请通过console.cloud.google.com/google/maps-apis/support 提交支持案例,以便打开个性化的沟通渠道。 确保您是正确的encoding your URL 和/或尝试生成新密钥。 【参考方案1】:我认为 shell 干扰了您查询中的某些字符。如果您使用 bash 或类似的 shell,我可以用单引号或双引号将查询地址括起来。例如:
curl 'https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=XXX'
"results" : [
"address_components" : [
"long_name" : "1600",
"short_name" : "1600",
"types" : [ "street_number" ]
...
为了更方便,您可以将键存储在 shell 环境变量中,并在 shell 中使用双引号将其扩展为查询。这是我的工作:
export GOOGLE_MAPS_API_KEY=XXX
curl "https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=$GOOGLE_MAPS_API_KEY"
【讨论】:
以上是关于带有 cURL 的 Google 地理编码 API 请求被拒绝。我有一个与启用计费的项目关联的 API 密钥的主要内容,如果未能解决你的问题,请参考以下文章
如何在 PHP 中对谷歌地理编码 api 进行批量纬度/经度查找?