如何使用youtube的API V3分页功能


How to use Youtube's API V3 pagination features?

我刚刚开始使用Youtube的v3 API,我被困在某个地方,我应该使用分页,但不知道如何做到这一点!

我只能使用nextpagetoken作为pagetoken去下一页,但我不能回到上一页!

if (!empty($_GET['page'])) {
    $noPage = $_GET['page'];
    $page = ($noPage-1)*20;
    $pageToken = $_SESSION["nextToken"];
} else {
    $noPage = 1;
    $page = 1;
}
$searchResponse = $youtube->search->listSearch('id,snippet', array('q' => $q, 'maxResults' => $maxResults, 'type' => "video", 'pageToken' => $pageToken,));
if ($noPage > 1) {
    //echo'<a href="?page='.($noPage-1).'"><input type="submit" value="&laquo; Previous Page"/></a> - ';
    echo'<a href="'.$vhome.'search.html?q='.querydecode($q).'&amp;page='.$prev.'"><input type="submit" value="&laquo; Previous Page"/></a> - ';
}
if ($searchResponse['nextPageToken']) {
    //echo '<a href="?page='.($noPage+1).'"><input type="submit" value="Next Page &raquo;"/></a>';
    echo '<a href="'.$vhome.'search.html?q='.querydecode($q).'&amp;page='.$next.'"><input type="submit" value="Next Page &raquo;"/></a>';
}

如何获得下一页和前一页的结果?

页面1的搜索结果将包含一个"nextPageToken "…如果您将其设置为'pageToken'参数,并保留查询中的所有其他参数相同,它将加载页面2。

// loads the first page of results
$searchResponse = $youtube->search->listSearch('id,snippet', array('q' => $q, 'maxResults' => $maxResults, 'type' => "video"));
// this gets page two of results
$newSearchResponse = $youtube->search->listSearch('id,snippet', array('q' => $q, 'maxResults' => $maxResults, 'type' => "video", 'pageToken' => $searchResponse["nextPageToken"]));

第二页还将包含一个'nextPageToken',你可以用它去第3页,但第二页也返回'prevPageToken';如果您将'pageToken'参数设置为该值并重新运行您的请求,您将再次从页面1获得结果。

// loads the third page of results
$newNewSearchResponse = $youtube->search->listSearch('id,snippet', array('q' => $q, 'maxResults' => $maxResults, 'type' => "video",'pageToken' => $newSearchResponse["nextPageToken"]));
// this goes back to page 1 of results
$oldSearchResponse = $youtube->search->listSearch('id,snippet', array('q' => $q, 'maxResults' => $maxResults, 'type' => "video", 'pageToken' => $newSearchResponse["prevPageToken"]));