Google Drive PHP API 分页在使用不同请求时不起作用

问题描述 投票:0回答:0

我在 Laravel (v9.0) 项目中使用 Google Drive PHP API。关于分页,希望流程如下:

  1. 获取第一页文件并返回给前端;
  2. 当用户滚动到页面底部时,前端请求下一页文件;
  3. 后端接收请求并从 Google Drive API 获取适当的页面。

我面临的问题是,当前端请求下一页时(在下面的示例中,

pageToken
具有来自先前 Google Drive 调用的
nextPageToken
的值),Google 将引发错误:
code: 400, message: Invalid Value, location: pageToken
。下面是我正在使用的代码:

$pageToken = request()->input('pageToken');

$optParams = [
    'q' => '' . $parentQuery,
    'pageSize' => $paginateSize,
    'fields' => 'nextPageToken, files(id, name, parents)',
];

if ($pageToken) {
    $optParams['pageToken'] = "'" . $pageToken . "'";
}

$response = $this->service->files->listFiles($optParams);

但是,如果我在后端获取所有页面,然后再返回它们,它似乎可以工作:

$optParams = [
    'q' => '' . $parentQuery,
    'pageSize' => $paginateSize,
    'fields' => 'nextPageToken, files(id, name, parents)',
];

$files = [];

do {
    $results = $this->service->files->listFiles($optParams);

    $files = array_merge($files, $results->getFiles());

    $pageToken = $results->getNextPageToken();

    if ($pageToken) {
        $optParams['pageToken'] = "'" . $pageToken . "'";
    }

} while ($pageToken);

我可能误解了在 Google Drive API 中使用分页的方式,但是有没有办法像我的第一个示例那样对内容进行分页?

php laravel google-drive-api
© www.soinside.com 2019 - 2024. All rights reserved.