2013-06-12 41 views
0

我發現facebook的'圖形API資源管理器'工具(https://developers.facebook.com/tools/explorer/)是一個非常簡單的方法,歡迎(對於初學者)&有效的方式來使用Facebook的圖形API通過它的GUI。Ruby - 使用Facebook的Graph API Explorer與考拉寶石

我希望能夠使用考拉寶石將這些生成的URL傳遞給Facebook的api。

現在,可以說我有過這樣

url = "me?fields=id,name,posts.fields(likes.fields(id,name),comments.fields(parent,likes.fields(id,name)),message)" 

我希望能夠直接傳遞到無尾熊一個字符串的查詢。

@graph.get_connections(url) 

它不喜歡,所以我分離出的UID和?運營商像寶石似乎想

url = "fields=id,name,posts.fields(likes.fields(id,name),comments.fields(parent,likes.fields(id,name)),message)" 
@graph.get_connections("me", url) 

然而,這會返回一個錯誤,以及:

Koala::Facebook::AuthenticationError: 
type: OAuthException, code: 2500, 
message: Unknown path components: /fields=id,name,posts.fields(likes.fields(id,name),comments.fields(parent,likes.fields(id,name)),message) [HTTP 400] 

目前這是我卡住的地方。我想繼續使用考拉,因爲當涉及到使用OAuth & OAuth2時,我喜歡使用API​​,,尤其是

UPDATE:

我開始打破請求成碎片其中考拉寶石可以處理,例如

posts = @graph.get_connections("me", "posts") 
postids = posts.map { |p| p['id'] } 
likes = postids.inject([]) {|ary, id| ary << @graph.get_connection(id, "likes") } 

所以這是獲得兩個陣列,帖子中的一個很長的路要走,其中一個相似的數據。

但是,我很快就會使用這種方法快速燒盡我的API請求限制。

我曾經希望我能夠從Graph API Explorer中傳遞整個字符串,只是想得到我想要的而不是手動解析所有這些東西。

回答

3

我真的不知道你的posts.fields(likes.fields(id,name) - 這在Graph API Explorer不起作用 - 和類似的東西,但我知道你可以這樣做:

fb_api = Koala::Facebook::API.new(access_token) 
fb_api.api("/me?fields=id,name,posts") 
# => => {"id"=>"71170", "name"=>"My Name", "posts"=>{"paging"=>{"next"=>"https://graph.facebook.com/71170/posts?access_token=CAAEO&limit=25&until=13705022", "previous"=>"https://graph.facebook.com/711737070/posts?access_token=CAAEOTYMZD&limit=25&since=1370723&__previous=1"}, "data"=>[{"id"=>"71170_1013572471", "comments"=>{"count"=>0}, "created_time"=>"2013-06-09T08:03:43+0000", "from"=>{"id"=>"71170", "name"=>"My Name"}, "updated_time"=>"2013-06-09T08:03:43+0000", "privacy"=>{"value"=>""}, "type"=>"status", "story_tags"=>{"0"=>[{"id"=>"71170", "name"=>" ", "length"=>8, "type"=>"user", "offset"=>0}]}, "story"=>" likes a photo."}]}} 

而且你會收到一個哈希你要求。

+0

你沒有抓住整個查詢。完整的查詢是'me?fields = id,name,posts.fields(likes.fields(id,name),comments.fields(parent,likes.fields(id,name)),message)',它確實有效。我只是試了一下。 – coloradoblue

+0

它的工作。謝謝。 – coloradoblue

+0

我不知道你可以做到這一點。謝謝 ! – oldergod

0

不時,你必須通過零作爲一個參數去考拉:

result += graph_api.batch do |batch_api| 
    facebook_page_ids.each do |facebook_page_id| 
    batch_api.get_connections(facebook_page_id, nil, {"fields"=>"posts"}) 
    end 
end 
相關問題