0

我正在尝试使用 Instagram API 创建一个包含所有用户 Instagram 图片的画廊。但我在画廊里只有大约 33 张照片。你能帮我吗?我怎样才能解决这个问题?

   $response = file_get_contents('https://api.instagram.com/v1/users/' . $target . '/media/recent?access_token=' . $_SESSION['instagram_token'] . '&count=-1');
4

3 回答 3

1

根据文档,您正在使用一个端点,它将返回用户最近的所有媒体。因此,它不承诺返回所有图像。即使您指定了计数,也会返回最大数量的图像。

但是,您可以使用分页;有关信息,请参阅以下问题/答案:

Instagram API:如何获取所有用户媒体?

我想您可以每个请求读取 20 个,然后找到结果的最低 id 并将其用作下一个请求的最大 id。

Request 1 (no max_id)
Id 100
Id 99
..
Id 81

Request 2 (max_id=81)
Id 80
.. 
Id 61

Request 3 (max_id=61)
Id 60
..
Id 41

然后继续请求,直到您不再收到任何返回的媒体

于 2014-12-05T13:12:29.397 回答
0

Instagram API 对其返回的结果数量施加了一个无声的、未记录的限制。即使你传入一个count高于33,它也最多只会返回 33 个结果。

我用 Javascript 编写了一个hack,它以进行更多 API 调用为代价消除了这个限制。目前,它仅在您按用户查询时才有效,但我可以实现它,因此它也适用于按标签查询,具体取决于我的可用时间和需求。

随时通过提交拉取请求做出贡献!(您可能希望将我所做的转换为 PHP 代码,以便您可以安全地使用访问令牌)

于 2015-01-23T01:42:22.350 回答
0

每个 API 调用将返回最多 20 张照片,您必须使用pagination.urlAPI 响应中的 进行另一个 API 调用以获取接下来的 20 张照片,依此类推。

https://api.instagram.com/v1/users/3/media/recent/?access_token=ACCESS-TOKEN
于 2014-12-05T16:31:16.230 回答