与此API一起使用时,API密钥浏览器API密钥不具有引用限制

Dam*_*ian 38 api maps geocoding

我正在尝试编程地理编码.我创建了API密钥,但是当我将它添加到我的网站代码中时,我没有得到任何东西,但是当我不使用API​​时,一切都运行良好.当我发送时:

https://maps.googleapis.com/maps/api/geocode/json?address=".$adres."&key=KLUCZ_XXX
Run Code Online (Sandbox Code Playgroud)

我收到回复:

Browser API keys cannot have referer restrictions when used with this API.
Run Code Online (Sandbox Code Playgroud)

如果我使用:

https://maps.googleapis.com/maps/api/geocode/json?address=".$adres" 
Run Code Online (Sandbox Code Playgroud)

结果是正确的,但每天查询的数量是有限的.

关键约束:引用HTTP(Web) - 设置为召唤查询的域.界面Google Maps Geocoding API已启用.

API密钥是否也必须在其他地方激活才能工作?

小智 59

听起来你可能正在建立API调用服务器端.我今天早些时候遇到了这个问题.由于您已对API密钥设置了引荐来源限制,因此它将仅限于使用Web服务API在浏览器上执行,包括Geocoding API.即使在请求标头中手动设置引荐来源,它也不适用于我.您可以在此页面上找到其他Web服务API:https://developers.google.com/maps/web-services/

重要提示:如果您使用具有引用引用的API密钥的任何Web服务API,则您的请求将失败并显示错误消息:"API密钥在与此API一起使用时不能具有引用限制." 您应该切换到使用服务器限制.

您将需要创建一个单独的密钥以使用服务器端.您可以使用IP地址限制访问而不是浏览器引用来将限制从浏览器限制更改为服务器限制.

有关将密钥类型切换为服务器限制密钥的Maps API常见问题,请参阅此部分:https://developers.google.com/maps/faq#switch-key-type

或者,您可以继续使用浏览器密钥和地理编码客户端(JavaScript),然后通过ajax将结果返回到后端.

  • 我收到客户端的错误. (9认同)
  • 这是迄今为止谷歌所能做的最谷歌的事情。如果您想要进行任何类型的后端验证,他们实际上会强制您创建 2 个 API 密钥(例如,如果您想在数据库中保存某个地点的 ID 和名称,如果没有第二个密钥,则无法使用他们的 API 进行验证) 。太棒了,谷歌! (5认同)
  • 同样在这里。从浏览器使用它时看到此错误。 (4认同)

小智 8

如果服务器端地理编码不可行,您应该使用Google Javascript API中的地理编码器。您可以对该 API 设置 HTTP 引用限制。

Google 本身表示要避免使用非 Javascript Geocoder API 进行动态地理编码

该服务通常设计用于对静态(预先已知)地址进行地理编码,以便将应用程序内容放置在地图上;该服务并非旨在实时响应用户输入。对于动态地理编码(例如,在用户界面元素内),请参阅 Maps JavaScript API 客户端地理编码器和/或 Google Play 服务位置 API 的文档。