2013-06-12 3 views
0

Я нашел API-интерфейс facebook 'Graph API Explorer' (https://developers.facebook.com/tools/explorer/) невероятно простым способом, приветствуя (для новичков) & эффективный способ использования графика facebook API через его графический интерфейс.Ruby - Использование API-интерфейсов API facebook в сочетании с драгоценным камнем koala

Я хотел бы иметь возможность использовать драгоценный камень koala для передачи этих сгенерированных URL-адресов в api facebook.

Прямо сейчас, позволяет сказать, что у меня был запрос, как этот

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] 

В настоящее время я застрял. Я хотел бы продолжать использовать коалу, потому что мне нравится подход к работе с API, особенно, когда дело доходит до использования OAuth & OAuth2.

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 в кратчайшие сроки, используя такой подход.

Я как бы надеялся, что просто смогу передать всю строку из API-интерфейса Graph API и просто получить то, что я хотел, а не вручную разбирать все эти вещи.

ответ

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 
Смежные вопросы