是否实时从Facebook GRAPH API获取数据?

时间:2010-08-10 16:07:03

标签: facebook

我正在创建一个Facebook应用程序,可以下载相册中的所有照片。该应用程序是为个人使用而创建的,同时学习Facebook API和JSON。

我已经可以通过调用此网址检索相册内的照片的网址:

http://graph.facebook.com/[album id] / photos?fields = source

我要下载的相册包含5400张照片,因此我尝试通过添加limit参数来增加限制:

http://graph.facebook.com/[album id] / photos?fields = source& limit = 1000

问题在于:

返回的结果仅在2010-07-30T11:20:11 + 0000之前。当我尝试使用until参数修改查询时,如下所示:

http://graph.facebook.com/[album id] / photos?fields = source,link& limit = 1000& until = 2010-06-01

数据响应正确。但是,如果我将日期更改为2010-08-05,则返回的最新照片将具有2010-07-30T11:20:11 + 0000的created_date。

最后一张照片是5695中的照片#5000。

这是我的问题:

从Facebook GRAPH Api实时获取数据(或每月更新,2010-07-30)?或者专辑中返回的照片数量只有限制(如5000)?

谢谢!

修改

Facebook有5000个对象限制。如果您知道如何突破限制,请转到此处: Breaking the 5000 object limit in Facebook API

谢谢!

2 个答案:

答案 0 :(得分:1)

返回的对象确实有5000个限制。 您需要在photo表排序上运行多个FQL查询并限制结果(< 5000)以获取所有数据(查看照片表页面中的示例)。(不是工作)

答案 1 :(得分:1)

当我查看您链接的图表查询中的照片时

https://graph.facebook.com/119403264763178/photos

我在底部看到了分页信息。所以,一起快速测试

$request  = 'http://graph.facebook.com/119403264763178/photos?fields=source&limit=1000';
$response = json_decode( file_get_contents( $request ), true );

$totalCount = 0;

while ( count( $response['data'] ) )
{
  echo 'Fetching ' . urldecode( $response['paging']['next'] ) . '<br>';
  $totalCount += count( $response['data'] );
  $response = json_decode( file_get_contents( $response['paging']['next'] ), true );
}

echo $totalCount;

即使在分页数据之后,您仍然只能检索5000条记录。

我建议点击FB论坛或打开错误票。