我正在使用Facebook实时api,因为我只获得更新,并且必须通过再次点击服务器来获取整个数据。 我有一个页面,我的应用程序添加到那,因此我得到页面提供(如,评论,发布,所有)。 当任何用户在页面上发帖时,我们会从Facebook实时更新API获取更新。但是当我尝试使用Koala gem获取post数据时,它会给我错误,请注意错误不是来自Page本身的更新(页面管理员),而是当其他一些用户发布时。 以下是帮助代码: -
尝试使用长期存在的页面标记来获取,并且没有这样做,两种方式都失败
@@graph = Koala::Facebook::API.new ACCESS_TOKENS["facebook"]["page_token"]
@@public_graph = Koala::Facebook::API.new
来自facebook的JSON回复: -
{"object"=>"page",
"entry"=>
[{"id"=>"123412341234234",
"time"=>1412341234,
"changes"=>
[{"field"=>"feed",
"value"=>
{"item"=>"post",
"verb"=>"add",
"post_id"=>123412341234123,
"sender_id"=>1234123412}}]}]}}
@@public_graph.get_object("123412341234123")
*** Koala::Facebook::ClientError Exception: type: GraphMethodException, code: 100, message: Unsupported get request. [HTTP 400]
@@graph.get_object("123412341234123")
*** Koala::Facebook::ClientError Exception: type: GraphMethodException, code: 100, message: Unsupported get request. [HTTP 400]
请帮助我了解如何使用facebook的realtime-updates api提供的post_id来获取公开发布数据。
答案 0 :(得分:1)
问:如何使用facebook的realtime-updates api提供的post_id获取公开发布数据。
要从页面获取帖子的公共数据,您需要指定在RT点击表单fb中获得的ID(页面ID和帖子ID)。
您需要将ID传递为<page_id>_<post_id>
。在您的情况下,它将是:
rt_hit = {"object"=>"page",
"entry"=>
[{"id"=>"123412341234234",
"time"=>1412341234,
"changes"=>
[{"field"=>"feed",
"value"=>
{"item"=>"post",
"verb"=>"add",
"post_id"=>123412341234123,
"sender_id"=>1234123412}}]}]}}
entry = rt_hit["entry"].first // you may want to have loop instead of `first`
public_id = "#{entry['id']}_#{entry['changes'].first['value']['post_id']}"
@@public_graph.get_object(public_id) // fetch object