2012-07-13 140 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