1

我从 Google Places API 获得了一个有效的 api 密钥。我需要在后端使用它,所以我得到了一个服务器端密钥。但是,使用 curl 或 Rails 控制台无法调用。

但是,它确实可以通过浏览器工作。也就是说,我已经三重检查了我正在使用我生成的服务器端密钥。我也只使用 Google Places 文档中的示例 URL,所以所有参数都应该是正确的。这是我的卷曲:

curl -v https://maps.googleapis.com/maps/api/place/search/xml?location=-33.8670522,151.1957362&radius=500&types=food&name=harbour&sensor=false&key=my_key

此外,在(Ruby)Rails 控制台中:

Net::HTTP.get_response(URI.parse("https://maps.googleapis.com/maps/api/place/search/xml?location=-33.8670522,151.1957362&radius=500&types=food&name=harbour&sensor=false&key=my_key" ))

有任何想法吗?似乎很多人都遇到了问题,但是对于服务器密钥不起作用没有什么特别的。

谢谢!

4

1 回答 1

3

使用 CURL,请务必在 URL 周围加上引号。否则,如果您在 Linux 中工作,则 URL 将在第一个 & 符号之后被截断,这将导致 REQUEST_DENIED 响应。

对于带有 Ruby 的 HTTPS,以下应该有效(参考http://www.rubyinside.com/nethttp-cheat-sheet-2940.html):

require "net/https"
require "uri"

uri = URI.parse("https://maps.googleapis.com/maps/api/place/search/xml?location=-33.8670522,151.1957362&radius=500&types=food&name=harbour&sensor=false&key=...")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Get.new(uri.request_uri)

response = http.request(request)
print response.body
于 2012-07-14T00:54:07.220 回答