2011-10-10 40 views
2

你如何向Facebook對象圖做請求以獲取用戶的朋友? 「https://graph.facebook.com/user_id/friends?access_token=2227470867|2.AQDi3TbqnqrsPa0_.360:來自ruby的Facebook對象圖https請求

如果你在它的工作原理在瀏覽器中鍵入URL(通過有效USER_ID和訪問令牌替換) 「

當我使用Net :: HTTP.get_response(URI.parse('url'))從ruby代碼嘗試它時,我得到了URI :: InvalidURIError錯誤消息。

回答

1

您的訪問令牌具有某些URL無效的字符。你必須CGI.escape他們。

require 'cgi' 

access_token = '2227470867|2.AQDi3TbqnqrsPa0_.360' 
url = "https://graph.facebook.com/user_id/friends?access_token=#{CGI.escape(access_token)}" 
uri = URI.parse(url) 

http = Net::HTTP.new(uri.host, uri.port) 
http.use_ssl = true 
request = Net::HTTP::Get.new(uri.path + "?" + uri.query) 
response = http.request(request) 
data = response.body 
+0

謝謝,這就是我一直在尋找的。我也可以添加,因爲它是SSL請求,我不得不稍微更改一下代碼。 'token = access_token ['credentials'] ['token'] uri = URI.parse(「https://graph.facebook.com/#{id}/friends?access_token=#{CGI.escape(token) }「) #response = Net :: HTTP.get_response(URI.parse(url)) http = Net :: HTTP.new(uri.host,uri.port) http.use_ssl = true request = Net :: HTTP :: Get.new(uri.path +「?」+ uri.query) response = http.request(request) data = response.body' –

+0

@EdijsPetersons,我也更新了我的答案,包括你的ssl變化 –

0

也許與OAuth有關?我建議你使用像Koala這樣的庫,而不是展開自定義adhoc解決方案。

+0

我嘗試,但在初始化時'@graph =考拉:: ::實我API.new遇到錯誤(的access_token [ '憑證'] [ '令牌'])'。在使用omniauth devise環境變量'env [「omniauth.auth」]''從Facebook進行回調後,access_token即將到來。我從10月1日看到有一些對象圖變化。你有沒有工作的例子? –