0

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

我想要做的是从页面中获取所有在评论中有特定标签的照片(例如,从公司页面获取所有照片,评论中只包含“#bluepants”)。

我试图确保 Facebook API 处理繁重的工作(我们将缓存结果),所以我想使用 FQL 或 Graphs API,但我似乎无法让它工作(我的 SQL 相当在依赖 ORM 这么久之后生锈了)。我希望它能输出尽可能多的结果,但我不确定 FB 是否能让你一次做超过 25 个。

这将在一个 sinatra 站点中实现(我目前正在玩 Koala gem,所以如果我可以使用它进行查询,可以加分)

谁能给我一些指导?

谢谢!

4

1 回答 1

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获取在我的活动开始日期之后创建的所有流对象,这些对象是照片并且评论计数不为零。使用 500 的 LIMIT 似乎返回了最大数量的帖子。更高或更低的值返回更少。
  • #commented查找在#HASHTAG他们的评论之一的文本中包含的帖子。请注意,我不是在寻找#,它是 FQL 中的保留字符。使用它可能会给您带来问题。
  • #accepted获取在#commented 中找到的帖子的完整详细信息。
  • #images获取这些帖子中图像的所有详细信息。我在我的待办事项上有它来重构它以object_id代替使用pid并尝试使用新real_width规范来使我的布局更容易。
  • #users#pages获取最初发布该项目的演员的详细信息。我现在知道我可以使用该profile表在一个查询中得到它。
  • #places获取地理标记帖子的位置详细信息。

你可以在这里看到这个:http: //getwellgabby.org/show-us-a-sign

于 2012-09-17T12:40:05.143 回答