带有 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 密钥的主要内容,如果未能解决你的问题,请参考以下文章

Google 地理编码 API 安全性

如何在 PHP 中对谷歌地理编码 api 进行批量纬度/经度查找?

Google Javascript API 地理编码限制

Google地理编码API无法识别某些邮政编码

Google 地理编码 API 为邮政编码返回 ZERO_RESULTS

Google 地理编码 API 无法识别某些邮政编码