【问题标题】:Instagram API: how can I get all user's pictures?Instagram API:如何获取所有用户的图片?
【发布时间】:2014-12-05 13:04:43
【问题描述】:
我正在尝试使用 Instagram API 创建包含所有用户 Instagram 图片的图库。
但我在画廊里只有大约 33 张照片。
你能帮我吗?我该如何解决这个问题?
$response = file_get_contents('https://api.instagram.com/v1/users/' . $target . '/media/recent?access_token=' . $_SESSION['instagram_token'] . '&count=-1');
【问题讨论】:
标签:
instagram
instagram-api
【解决方案1】:
根据documentation,您正在使用一个端点,它将返回用户的所有最近媒体。因此,它不承诺返回所有图像。即使您指定了计数,也会返回最大数量的图像。
但是,您可以使用分页;有关信息,请参阅以下问题/答案:
Instagram API: How to get all user media?
我想您可以每个请求读取 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
然后继续请求,直到您不再收到任何返回的媒体
【解决方案2】:
每次 API 调用将返回最多 20 张照片,您必须在 API 响应中使用 pagination.url 进行另一个 API 调用以获取接下来的 20 张照片等等。
https://api.instagram.com/v1/users/3/media/recent/?access_token=ACCESS-TOKEN
【解决方案3】:
Instagram API 对其返回的结果数量施加了一个无声的、未记录的限制。即使你传入一个高于33 的count,它也只会返回最多33 个结果。
我用 Javascript 编写了一个hack,它以进行更多 API 调用为代价消除了这个限制。目前,它仅在您按用户查询时才有效,但我可以实现它,因此它也适用于按标签查询,具体取决于我的可用时间和需求。
通过提交拉取请求随时贡献! (您可能希望将我所做的转换为 PHP 代码,以便您可以安全地使用访问令牌)