如何检索一个人被标记的所有Facebook照片

时间:2011-10-07 05:01:38

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

我知道您可以将限制和偏移值附加到graph.facebook.com/id/photos API调用以通过照片分页。但是大的限制似乎不能很好地工作,照片最终会丢失。我在这里读到limit = 0会给你所有的照片,但是照片会再次丢失。那么你可以可靠地使用的最大限制是什么?什么是有效检索所有照片的正确方法?

是否有关于限制限制的文件?

2 个答案:

答案 0 :(得分:2)

这是我对Facebook API的体验......

如果设置了限制,则不会获得更多限制。但是,尽管存在更多限制,但大多数限制肯定会比您要求的少。在响应API查询时,所有Facebook似乎都运行在“足够好”的原则上。如果您要求5000件物品,并且在5-15秒后系统只能检索350件,那么您可能会检索到所有物品。内容的大小似乎也有限制。因此,限制完全取决于您查询的内容类型,而不是固定金额。可以说limit=5并且只能获得4个项目(即使存在更多项目)。

limit=0曾经尽可能多地提供回复,但我不确定它是否仍然有效。您还可以使用since / until更具体地说明要检索的项目。但无论如何,没有办法知道你是否得到了所有可能的回应。

答案 1 :(得分:1)

我在申请中遇到了同样的问题。 “我/照片”没有提供完整的数据。人们可以理解与照片相关的许可,但随后“我/照片”最终也不会返回具有“公共”许可的照片。

我们通过采取以下方法解决了这个问题。现在,我们的应用程序将返回所有已标记的照片,但具有限制性权限的照片除外。

首先,我们确实找到了使用FQL标记用户的照片的ID列表。这可以通过以下方式实现。


FB.api({
"method": 'fql.query',
"query": 'select object_id from photo_tag where subject=me()'
}
,function(resp)
{

}

上述API将提供用户处于活动状态的照片的ID。现在,一旦ID可用,就可以获取照片的详细信息。


FB.api({
"method": 'fql.query',
"query": 'select object_id from photo_tag where subject=me()'
}
,function(resp)
{
   var photoId = resp.object_id;
   FB.api("/" + photoId, function(data){////DO THE PROCESSING/////////////});
}

上述过程涉及到Facebook的大量请求,但到目前为止,这是我们找到所有可能标记的照片的唯一方式。