我正在为非营利组织开展宣传活动。我们要求人们上传他们持有标志的照片到非营利组织的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作为应用程序进行身份验证,也会发生这种情况。
我尝试让人们在发帖时为他们的邮件添加文字字符串,但这种情况并没有发生。有些人将这个字符串添加到非营利组织不想要的照片中,非营利组织眼中的最佳照片中没有该字符串。
感谢您的帮助。
答案 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身份执行查询。您可以在其中“命名”查询以在其他查询中引用其结果,并且您可以为每个单独的操作指定不同的访问令牌。