0

我正在使用 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())
      ))))

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

如何检索更多照片?

4

2 回答 2

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]到您的photo和查询来多次执行此photo_tag查询。如果您使用 500 for,[results]您将使用 0, 500, 1000, 1500... 作为[offset]遍历此查询的值。当它返回一个空数组时停止。

于 2012-07-29T15:02:27.907 回答
0

我之前在 stackoverflow 上回答了类似的问题。以下是相同的链接。在这个我正在获取用户的标记照片。您可以为朋友的照片修改相同的内容。

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

该解决方案的 GIST 是,您的查询永远不会获得完整的数据。我在我的应用程序中尝试过同样的方法。例如,我测试的用户有 700 多张照片。但是与您类似的查询只返回了 300 多张照片。

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

希望这可以帮助。

谢谢

考希克

于 2012-07-30T05:04:38.610 回答