如何从我的应用程序发布的图片中获取实时数据?

时间:2013-04-10 02:48:45

标签: facebook facebook-graph-api real-time

我正在开发一个应用程序,我想要它做的是:

  1. 在用户的墙上发布一个poto
  2. 实时获取此帖子将收到的喜欢的数量
  3. 我遇到的第一个问题是根据post-id获取喜欢计数,这是我的照片上传代码:

    FB.api('/photos', 'post', {
            message: $user_submited_string,
            url:'http://example/url/image.jpg'        
        }, function(response){
            if (!response || response.error) {
                //error handler
            } else {
               var posted_content_id = response.postid;
               console.log(posted_content_id);
            })
    

    但是当我将这个posted_content_id变量放入Open Graph Debugger时,我不会得到喜欢的数量:

    {
      "id": "1685033176_4107146412059", 
      "from": {
        "name": "João Paulo Apolinário Passos", 
        "id": "1685033176"
      }, 
      "picture": "https://fbcdn-photos-a.akamaihd.net/hphotos-ak-prn1/548929_4107355417284_1018318871_s.jpg", 
      "link": "https://www.facebook.com/photo.php?fbid=4107355417284&set=a.4107146292056.1073741826.1685033176&type=1&relevant_count=7", 
      "name": "My Test App Photos", 
      "icon": "https://fbstatic-a.akamaihd.net/rsrc.php/v2/yz/r/StEh3RhPvjk.gif", 
      "actions": [
        {
          "name": "Comment", 
          "link": "https://www.facebook.com/1685033176/posts/4107146412059"
        }, 
        {
          "name": "Like", 
          "link": "https://www.facebook.com/1685033176/posts/4107146412059"
        }
      ], 
      "privacy": {
        "description": "Public", 
        "value": "EVERYONE", 
        "friends": "", 
        "networks": "", 
        "allow": "", 
        "deny": ""
      }, 
      "type": "photo", 
      "status_type": "added_photos", 
      "object_id": "4107355417284", 
      "application": {
        "name": "My Test App", 
        "id": "178883808932511"
      }, 
      "created_time": "2013-04-10T01:20:12+0000", 
      "updated_time": "2013-04-10T01:20:12+0000"
    }
    

    其中不包含我的照片的计数。所以第一个问题是:如何获取用户插入的图像的计数?

    第二件事是,在获得喜欢的数量后,我想对它们进行排名。为此,我考虑将它们存储到数据库中并设置一个cron作业以检查新帖子并使用新帖子更新排名。当我在寻找如何做到这一点时,我遇到了Facebook开发人员文档的“实时更新”部分。但对我来说,目前尚不清楚我是否可以实时计算这个数字以及如何计算。那是我的第二个问题:我可以使用原生“实时更新”实时获取图像的喜欢数量吗?如果那不可能,如何创建自己的计数器?扩展令牌和cronjobs?

    我在一个问这两个问题,因为也许第二个问题是anwser也是第一个问题。最后我需要知道的是:即使它是可行的,做某些事情也会违反Facebook政策?

1 个答案:

答案 0 :(得分:2)

这是因为您要查询帖子ID ,而不是照片ID

上传照片时,帖子也会自动发布在用户的Feed上。 要阅读照片ID,您必须使用response.id属性。

在您的示例中,照片的ID为4107146412059,您可以从<user-id>_<photo-id>形式的帖子ID中获取它,但不要指望它,因为它可以在未来。

Graph API documentation

中的Photo对象上的文档

实时更新:

当用户Feed更新时,您可以从Facebook获得实时推送通知: enter image description here

但这样做会有点过分,因为您会将所有帖子都收到用户Feed,而不仅仅是您的照片。可悲的是,我认为唯一的方法是轮询更新。

有关实时更新的其他信息:Facebook documentation