我知道您可以将限制和偏移值附加到graph.facebook.com/id/photos API调用以通过照片分页。但是大的限制似乎不能很好地工作,照片最终会丢失。我在这里读到limit = 0会给你所有的照片,但是照片会再次丢失。那么你可以可靠地使用的最大限制是什么?什么是有效检索所有照片的正确方法?
是否有关于限制限制的文件?
答案 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的大量请求,但到目前为止,这是我们找到所有可能标记的照片的唯一方式。