Facebook API:获取包含字符串注释的照片

时间:2012-09-17 05:07:11

标签: ruby facebook facebook-graph-api facebook-fql

我正在为我工​​作的公司实施一个伪哈希标记系统,用他们的客户的Facebook照片。客户可以将照片上传到页面,页面管理员可以使用产品的主题标签对其进行标记。

我要做的是从页面中获取评论中有特定标记的所有照片(例如,从公司页面获取所有照片,评论仅包含'#bluepants')。

我正在努力确保Facebook API处理繁重的工作(我们会缓存结果),所以我想使用FQL或Graphs API,但我似乎无法让它工作(我的在依赖ORM这么久之后,SQL非常生疏。我更喜欢它输出尽可能多的结果,但我不确定FB是否允许你一次超过25个。

这将在sinatra网站上实现(我目前正在玩考拉宝石,如果我可以使用它来查询奖励积分)

有人能给我一些指导吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

我在FQL / PHP中使用过这样的东西。这是我的多重查询。

{'activity':
   "SELECT post_id, created_time FROM stream WHERE source_id = PAGE_ID AND 
      attachment.fb_object_type = 'photo' AND created_time > 1338834720 
      AND comments.count > 0 LIMIT 0, 500",
  'commented': 
    "SELECT post_id, text, fromid FROM comment WHERE post_id IN 
      (SELECT post_id FROM #activity) AND AND (strpos(upper(text), '#HASHTAG') >= 0", 
   'accepted': 
     "SELECT post_id, actor_id, message, attachment, place, created_time, likes 
       FROM stream WHERE post_id IN (SELECT post_id FROM #commented) 
       ORDER BY likes.count DESC", 
   'images': 
     "SELECT pid, src, src_big, src_small, src_width, src_height FROM photo 
        WHERE pid IN (SELECT attachment.media.photo.pid FROM #accepted)",
   'users':
      "SELECT name, uid, current_location, locale FROM user WHERE uid IN 
        (SELECT actor_id FROM #accepted)",
   'pages':
     "SELECT name, page_id FROM page WHERE page_id IN (SELECT actor_id FROM #accepted)",
   'places':
      "SELECT name, page_id, description, display_subtext, latitude, longitude 
         FROM place WHERE page_id IN (SELECT place FROM #accepted)"
 }

要解决这个问题:

  • #activity获取在广告系列的开始日期之后创建的所有流对象,这些对象是照片并具有非零评论计数。使用LIMIT 500似乎返回最大帖子数。值越高或越低,返回的次数越少。
  • #commented查找其中一条评论文字中包含#HASHTAG的帖子。注意,我不是在寻找#,这是FQL中的保留字符。使用它可能会导致您的问题。
  • #accepted获取#commented中找到的帖子的完整详细信息。
  • #images获取这些帖子中图片的所有详细信息。我在我的todos上有重构,使用object_id代替pid并尝试使用新的real_width规范来简化布局。
  • #users#pages获取最初发布该项目的演员的详细信息。我现在知道我可以使用profile表在一个查询中得到它。
  • #places获取地理标记帖子的位置详细信息。

您可以在此处查看此操作:http://getwellgabby.org/show-us-a-sign