我正在做一个小页面,列出了谷歌驱动器中的所有文件。第一次进行身份验证并保存刷新令牌+用户ID和电子邮件,然后列出所有文件。要获取信息,我这样做:
$result = array();
$pageToken = NULL;
do {
try {
$parameters = array();
if ($pageToken) {
$parameters['pageToken'] = $pageToken;
}
$files = $service->files->listFiles($parameters);
$list=$files->getItems();
$result = array_merge($result,$list);
$pageToken = $files->getNextPageToken();
} catch (Exception $e) {
echo "An error occurred: " . $e->getMessage();
$pageToken = NULL;
}
} while ($pageToken);
它可以工作,但是如果用户刷新页面,我确实刷新了访问令牌(从 db 获取刷新令牌),然后继续执行与上面相同的操作。在这种情况下,该代码给了我一个错误,因为这次我得到一个关联数组:
$files = $service->files->listFiles($parameters);
为了使其工作,我需要将代码更改为:
$result = array();
$pageToken = NULL;
do {
try {
$parameters = array();
if ($pageToken) {
$parameters['pageToken'] = $pageToken;
}
$files = $service->files->listFiles($parameters);
$list=$files['items'];
$result = array_merge($result,$list);
$pageToken = $files['nextPageToken'];
} catch (Exception $e) {
echo "An error occurred: " . $e->getMessage();
$pageToken = NULL;
}
} while ($pageToken);
这不应该发生,但我不知道出了什么问题。