2012-07-29 30 views
0

我正在使用FQL.I想要检索朋友的标记照片。 我正在使用此查询。无法使用FQL检索我朋友的正确标记的照片

SELECT pid,images FROM photo WHERE pid IN (
     SELECT pid FROM photo_tag WHERE pid IN (
     SELECT pid,images FROM photo WHERE aid IN (
      SELECT aid FROM album WHERE owner IN 
       SELECT uid,username,pic FROM user WHERE uid IN 
       SELECT uid2 FROM friend WHERE uid1 = me()) 
    )))) 

但它的检索量比我预期的要少。 我认为从相册中检索照片时有限制。

如何检索更多照片?

回答

0

我早些时候在stackoverflow上回答了类似的问题。以下是相同的链接。在这个我正在获取用户的标记照片。你可以修改朋友的照片。

How to retrieve ALL Facebook photos a person is tagged in

解决方案的要点是,你的查询,你将永远不会得到完整的数据。我在我的应用程序中尝试过。例如,我测试的用户有700多张照片。但类似于您的查询仅返回了300多张照片。

所以我的建议是从photo_tags获取photoID列表,即object_id,并使用BATCH请求来获取它们。

希望这会有所帮助。

感谢

考希克

0

首先,简化您的查询:您无需查看album,所以摆脱所有垃圾。为了保证未来的发展,object_id优于pid,所以我们将使用它。

SELECT object_id, images FROM photo WHERE object_id IN (
    SELECT object_id FROM photo_tag WHERE subject IN (
     SELECT uid2 FROM friend WHERE uid1 = me()) OR subject = me() 
) 

这将返回376张照片给我。

如果您需要更多信息,您需要多次执行此查询,方法是将LIMIT [offset] [results]添加到photophoto_tag查询中。如果您使用500作为[results],则可以使用0,500,1000,1500 ...作为循环查询的[offset]的值。当它返回一个空数组时停止。