使用facebook realtime-api提供的ID获取帖子的数据

时间:2014-07-13 18:44:26

标签: facebook facebook-graph-api ruby-on-rails-4 koala koala-gem

我正在使用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来获取公开发布数据。

1 个答案:

答案 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