0

Facebook の「グラフ API エクスプローラー」ツール ( https://developers.facebook.com/tools/explorer/ ) は、GUI を介して Facebook のグラフ API を使用するための非常に簡単な方法であり、歓迎され (初心者向け)、効果的な方法であることがわかりました。 .

koala gem を使用して、これらの生成された 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 と?演算子を分離し、gem が必要なようです

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 を操作するための gem アプローチが好きなので、引き続き koala を使用したいと思います。

アップデート:

たとえば、コアラの宝石が処理できるように、リクエストを細かく分割し始めています。

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

つまり、1 つは投稿の、もう 1 つは同様のデータの 2 つの配列を取得するには、長い道のりです。

しかし、この種のアプローチを使用すると、すぐに API 要求の制限を使い果たしてしまいます。

私は、Graph API Explorer から文字列全体を渡して、これらすべてを手動で解析するのではなく、必要なものを取得できることを望んでいました。

4

2 に答える 2

3

あなたの- これはGraph API Explorer ではposts.fields(likes.fields(id,name)機能しません -などについてはよくわかりませんが、次のことができることは知っています。

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."}]}}

そして、あなたが求めたものをハッシュで受け取ります。

于 2013-06-12T02:06:07.350 に答える