【发布时间】:2016-01-09 20:41:57
【问题描述】:
我正在用 PHP 编写一个程序,用于检索用户在 Instagram 上关注的人的列表。我遇到的问题是他们的 API 每次调用只返回 50 个结果,其余的都是分页的。 我知道有一个“下一页”,因为返回的 JSON 有一个 pagination->next_url。 目前,我拥有的代码获取 JSON 并对其进行解码。紧接着,使用来自第一个 API 调用的 URL 进行调用以获取下一页。 看看:
function getFollows($url){
$client_id = "my client id";
//echo "A url: ".$url."</br>";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 20);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$result = curl_exec($ch);
curl_close($ch);
return json_decode($result);
}
$url = 'https://api.instagram.com/v1/users/'.$user_id.'/follows/?client_id='.$client_id.'&access_token='.$token;
$first_page = getFollows($url);
$second_page = getFollows($first_page->pagination->next_url);
我想做的是检查 JSON 中的下一个 url 并调用 next_url。然后它会检查来自该 url 的 JSON 是否有下一个 url 并重复。然后,所有收集的 JSON 将合并到一个列表中,然后我可以遍历该列表以呼应每个人。 我的问题是,每次有分页时,我如何才能获取下一个 url,合并 JSON 并重复,直到没有更多的页面可以通过。
我可以继续制作 $third_page、$fourth_page,但如果用户有超过 4 页的关注者并且例如他们只有 10 个关注者,那将毫无意义。
我曾尝试使用 if 函数来检查是否有分页和 array_merge(),但无济于事。也许我做错了。 请有人指出我正确的方向。
谢谢,
-DH
【问题讨论】:
标签: php json api pagination instagram-api