2012-07-13 62 views
0

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

但是,它通过浏览器工作。也就是说,我有三重检查,我正在使用我生成的服务器端密钥。我也只使用Google场所文档中的示例网址,因此所有参数都应该是正确的。这里是我的卷发:

卷曲-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

此外,在(红宝石)Rails的控制台:

的Net :: HTTP.get_response(URI.parse(“HTTPS://maps.googleapis。 COM /地图/ API /地点/搜索/ XML?位置= -33.8670522,151.1957362 &半径= 500种&类型=食品&名=海港&传感器=假&键= my_key“))

任何想法?看起来好像有多个人有问题,但没有什么具体的服务器密钥无法工作。

谢谢!

+0

使用卷曲时我应该提到的响应:{ “html_attributions”:[], “结果”:[] , “status”:“REQUEST_DENIED” } – Pulley 2012-07-13 05:10:21

回答

2

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

对于HTTPS用Ruby,以下应工作(参照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 
+0

就是这样。不知道引号与非引号是否有区别,但吸取了教训。谢谢! – Pulley 2012-07-17 03:10:18

相关问题