2012-08-02 64 views
1

我正在盡我所能從Instagram API中獲取JSON。這裏是我在rails中的rake任務中嘗試的代碼。我如何使用ruby從Instagram獲取JSON API

require 'net/http' 


url = "https://api.instagram.com/v1/tags/snow/media/recent?access_token=522219.f59def8.95be7b2656ec42c08bff8a159a43d06f" 
resp = Net::HTTP.get_response(URI.parse(url)) 
puts resp.body 

所有我在終端得到的是「耙中止!文件 年底達到」

如果你看看Instagram的文檔http://instagram.com/developer/endpoints/tags/和粘貼在瀏覽器輸入以下網址,你會得到JSON回來,所以我確信我做錯了什麼。

https://api.instagram.com/v1/tags/snow/media/recent?access_token=522219.f59def8.95be7b2656ec42c08bff8a159a43d06f

回答

4

它有你需要HTTPS URL做打修改代碼以包括SSL

require "net/https" 
require "uri" 

uri = URI.parse("https://api.instagram.com/v1/tags/snow/media/recent?access_token=522219.f59def8.95be7b2656ec42c08bff8a159a43d06f") 
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) 
puts response.body 

或者你可以使用類似的財產以後要https://github.com/jnunemaker/httparty消費第三方服務

+1

現貨。 OP也可以考慮使用[官方ruby gem](https://github.com/Instagram/instagram-ruby-gem/)來使用Instagram API。 – wehal3001 2012-08-02 20:27:45

1

看起來你需要配置網絡/ HTTP,因爲你正在使用HTTPS使用SSL。

替代方案:使用Rails使用,它會分析在運行過程中也JSON:

ActiveSupport::JSON.decode(open(URI.encode(url)))

返回的哈希與