2

经过数小时的搜索和尝试在网络上找到的所有可能的解决方案,我无法为我的问题尝试任何其他方法,所以我真的需要帮助:

我想用地理编码结果实现一个简单的自动完成文本框,所以我在用户在文本框中键入时调用 AJAX 请求

  • 我已从 Google API 控制台启用了 Google 地图和 Google 地方信息
  • 我使用我的服务器 IP 为服务器应用程序创建了一个密钥
  • 我在服务器上运行了一个 PHP 文件(通过 AJAX 调用),它使用 file_get_contents() 函数(启用了 SSL)将请求发送到 Google Places - 也尝试使用 cURL 函数
  • 我要求的要求是

https://maps.googleapis.com/maps/api/place/autocomplete/json?input=MY_SEARCH_STRING&language=us&types=geocode&sensor=false&key=MY_KEY

其中 MY_SEARCH_STRING 是一个简单的字符串,例如“London”,而 MY_KEY 是我创建的密钥

  • 我得到的回应是

{“预测”:[],“状态”:“REQUEST_DENIED”}

  • 我也用浏览器键试过这个。还尝试创建一个新项目,重新启用服务,并创建新密钥。以任意组合多次打开/关闭服务并创建新密钥。没有任何效果。

  • 奇怪的是,过去几个月我在服务器上创建的登录页面上运行了相同的代码,但是检查了很长时间,所以我不知道它什么时候停止工作。

我非常感谢任何帮助!谢谢你。

4

3 回答 3

5

SOLVED. In Google API Console, I had declared allowed server IPs. I was assuming that if I declared an IP, I was just ensuring that requests would be allowed only from that IP. In order for this to work, you must also declare the allowed per-user limits for each IP, or else it just doesn't allow any requests. I removed all the allowed IPs, waited for 3-4 minutes, and the request was allowed.

于 2012-09-02T17:02:47.597 回答
1

我有一个类似的问题,修复了它并发现了一些可能有助于解决这个问题的东西

  • 使用 http 而不是 https 将导致 REQUEST_DENIED
  • 省略 &userIp=xxxx 将导致 REQUEST_DENIED
  • 需要生成和使用服务器密钥,以防请求来自 php 脚本,即使用户仅通过浏览器使用,否则将导致 REQUEST_DENIED
  • 在测试允许的 IP 列表是否已更改之前需要几分钟

希望它可以帮助你们中的一些人

于 2014-01-17T03:35:38.027 回答
1

不确定这是否有帮助,但这里有一个简短的示例:

https://google-developers.appspot.com/maps/documentation/javascript/examples/places-autocomplete?hl=el

于 2012-08-21T06:22:05.850 回答