[英]Error listing files with Google Drive API (PHP)
我正在尝试使用Google的PHP API( https://developers.google.com/drive/v2/web/quickstart/php )列出Google云端硬盘中的文件。
我已经设法获得了作用域访问令牌,但是Google提供的用于列出文件的示例代码( https://developers.google.com/drive/v2/reference/files/list#response )返回了错误。
这是我的代码:
$client = new Google_Client();
$client->setAuthConfigFile('/usr/share/nginx/google.json');
$client->setAccessToken($a4e->user->google_token); // access token scoped for DRIVE_READONLY
$drive_service = new Google_Service_Drive($client);
$files=retrieveAllFiles($drive_service);
var_dump($files);
function retrieveAllFiles($service) {
$result = array();
$pageToken = NULL;
do {
try {
$parameters = array();
if ($pageToken) {
$parameters['pageToken'] = $pageToken;
}
$files = $service->files->listFiles($parameters);
$result = array_merge($result, $files->getItems());
$pageToken = $files->getNextPageToken();
} catch (Exception $e) {
print "An error occurred: " . $e->getMessage();
$pageToken = NULL;
}
} while ($pageToken);
return $result;
}
这将返回以下错误:
致命错误:在第30行的/usr/share/nginx/html/tools/google/index.php中调用未定义的方法Google_Service_Drive_FileList :: getItems()
有人知道我在做什么错吗?
提前谢谢了。
我猜您正在使用Drive API V3并尝试在V3中调用版本V2的方法。 清楚地看一下文档,Drive API V2返回以下格式的响应{ "kind": "drive#fileList", "etag": etag, "selfLink": string, "nextPageToken": string, "nextLink": string, "items": [ files Resource ] }
因此,您可以在V2中执行$files->getItems()
。 但是Drive API V3以以下格式返回响应列表{ "kind": "drive#fileList", "nextPageToken": string, "files": [ files Resource ] }
因此,您可能需要执行$files->getFiles()
。 试试看 !! 我希望这能奏效。 供参考,请参阅Drive API V3列表响应 Drive API V2列表响应 。 让我知道问题是否解决。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.