带有 cURL 的 Google Geocoding API 请求被拒绝。我有一个与启用计费的项目相关联的 API 密钥

Cha*_*ode 5 curl google-maps google-api google-maps-api-3 google-geocoding-api

我正在尝试使用以下内容访问 Google 的地理编码 API:

curl 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 ", "results": [], "status": "REQUEST_DENIED"}

我传递的密钥与启用了地理编码和地点 API 的项目相关联,并且该项目也启用了计费。

dco*_*ing 6

我认为 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" ]
...
Run Code Online (Sandbox Code Playgroud)

为了更加方便,您可以将密钥存储在 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}"
Run Code Online (Sandbox Code Playgroud)