Google Places API服务器密钥无法使用Curl

时间:2012-07-13 00:58:12

标签: ruby api curl google-places-api

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

然而,它可以通过浏览器工作。也就是说,我已经三次检查我使用的是我生成的服务器端密钥。我也只使用Google地方文档中的示例网址,因此所有参数都应该是正确的。这是我的卷曲:

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控制台中:

净:: HTTP.get_response(URI.parse(“https://maps.googleapis.com/maps/api/place/search/xml?location=-33.8670522,151.1957362&radius=500&types=food& ;名称=海港&安培;传感器=假安培;键= my_key“))

有什么想法吗?似乎有多个人遇到了问题,但没有具体的服务器密钥无法正常工作。

谢谢!

1 个答案:

答案 0 :(得分:2)

使用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