从页面流中检索经过精选的照片集

时间:2012-06-07 13:55:53

标签: facebook facebook-fql photos

我正在为非营利组织开展宣传活动。我们要求人们上传他们持有标志的照片到非营利组织的Facebook页面。由于它们没有在时间轴上清晰显示,我们想要刮掉这些照片并将其显示在非营利组织的网页上。

轻松获取所有照片。我正在使用以下FQL来获取它们:

SELECT post_id, actor_id, message, attachment, place, created_time 
  FROM stream WHERE source_id = PAGE_ID and source_id <> actor_id 
      AND attachment.media <> '' AND created_time > 1338834720 
  LIMIT 50

问题是,还有其他人在上传到我们不希望在此图库中展示的网站的照片。我想要做的是进一步过滤此结果集,以便我们只获取页面或管理员喜欢或评论过的页面的照片。这就是我陷入困境的地方。

当我将其转换为多个查询并将上述查询的结果反馈到:

SELECT post_id FROM like WHERE user_id = PAGE_ID AND post_id IN (SELECT post_id FROM #query1)

我收到OAuth错误,我只能查询登录用户。即使使用PHP SDK作为应用程序进行身份验证,也会发生这种情况。

我尝试让人们在发帖时为他们的邮件添加文字字符串,但这种情况并没有发生。有些人将这个字符串添加到非营利组织不想要的照片中,非营利组织眼中的最佳照片中没有该字符串。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

好的,回答了我自己的问题。

我正在通过PHP SDK使用此FQL多重查询来获取策划的照片组。我决定发表评论,我的任何页面都是管理员:

  {
  'activity': 
     "SELECT post_id FROM stream WHERE source_id = PAGE_ID 
      AND attachment.fb_object_type = 'photo' AND created_time > 1338834720 
      AND comments.count > 0 LIMIT 100",
  'commented':
     "SELECT post_id, text, fromid FROM comment 
      WHERE post_id IN (SELECT post_id FROM #activity) 
      AND fromid IN (SELECT uid FROM page_admin WHERE page_id = PAGE_ID)", 
   '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", 
    '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)"
     }

直播网站位于:http://getwellgabby.org/show-us-a-sign。后端有很多PHP用于组合结果并使用ThickBox进行照片显示。

答案 1 :(得分:0)

尝试以Batch Requests身份执行查询。您可以在其中“命名”查询以在其他查​​询中引用其结果,并且您可以为每个单独的操作指定不同的访问令牌。