私はグーグルドライブにあるすべてのファイルをリストする小さなページをやっています。初めて認証を行い、更新トークン+ユーザー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);
これは起こらないはずですが、何が悪いのかわかりません。