更新:为了给出一个更明确的问题。如何将 Google 控制台 API 密钥与 Google 地图地理编码 Web 服务 API 一起使用?目前,当我指定密钥时请求被拒绝,但即使它失败了,它也会记录在 Google Console API 站点的报告部分中。
原始问题
我有一个现有的应用程序,它已被修改为在输入地址时开始地理编码(用于在谷歌地图上的应用程序中使用)。对此的预期数量预计在免费产品的限制范围内,目前不需要密钥。但是现在我必须对所有现有地址进行地理编码。我有一个小型 Windows 应用程序 (C#),它将一次循环遍历它们,请求对它们进行地理编码(通过https://maps.googleapis.com/maps/api/geocode/json)并将结果存储在数据库中. 但是我一直遇到查询限制。为了帮助缓解这种情况,我在 Google API 控制台 ( https://code.google.com/apis/console/ ) 上设置了一个帐户,这样我就可以超出限制,只需为超额付费。
问题是为了使用这种计费方式,我必须为请求提供一个控制台 API 密钥,但每次我这样做时,我都会收到一个状态为REQUEST_DENIED
.
如果我取下钥匙,它可以正常工作,但它会失败。现在,我在环顾四周时看到了其他类似的问题,但找不到该问题的答案。
我尝试了各种替代域,包括 maps.google.com、maps.googleapis.com 和 maps-api-ssl.google.com,据我所知,它们似乎都有同样的问题。
到目前为止,这是我能够找到的:
- 该服务在 Google 控制台 API 的站点中列为 Google Maps API v3(v2 有一个单独的条目),所以我不认为密钥在 v3 中不再是强制性的问题。
- 我知道请求正在通过并针对此 API 密钥正确记录,因为每次尝试失败时,Google API 控制台的“报告”选项卡上的请求计数都会增加一个。
- *我知道不通过网页访问它不是问题,因为控制台 API 明确允许您生成供服务器/服务使用的密钥,并且您可以通过 IP 地址限制对它们的访问,而不是 URL Referrer。
- *我还验证了此页面上概述的参数语法,以及其他用法
*这些对于控制台 API 系统似乎是通用的,但在用于 Google Maps API 时没有提及这些做法的例外情况。
我什至试图联系谷歌,但显然他们没有通过电话提供支持(我希望今天能完成,但看起来不太可能)。