无法使用FQL正确检索我朋友的标记照片

时间:2012-07-29 13:15:41

标签: ruby-on-rails facebook api facebook-graph-api facebook-fql

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

但它的回收率低于我的预期。 我认为从相册中检索照片时有限制。

如何检索更多照片?

2 个答案:

答案 0 :(得分:0)

首先,简化您的查询:您不需要查看album,所以摆脱所有垃圾。对于面向未来的事情,object_idpid更受欢迎,因此我们将使用它。

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多次执行此查询。如果对[results]使用500,则在循环执行此查询时,将使用0,500,1000,1500 ...作为[offset]的值。当它返回一个空数组时停止。

答案 1 :(得分:0)

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

How to retrieve ALL Facebook photos a person is tagged in

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

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

希望这有帮助。

由于

考希克