Я следовал этому руководству:
https://developers.google.com/drive/api/v3/quickstart/php?authuser=1
Теперь я хочу получить ссылку на загрузку из файла. Я пытаюсь использовать $ file-> getDownloadUrl (), но получаю следующую ошибку:
Fatal error: Uncaught Error: Call to undefined method Google_Service_Drive_DriveFile::getDownloadUrl() in C:\xampp\htdocs\Prueba\quickstart.php:84
Stack trace:
#0 {main}
thrown in C:\xampp\htdocs\Prueba\quickstart.php on line 84
Это мой код:
// Get the API client and construct the service object.
$client = getClient();
$service = new Google_Service_Drive($client);
// Print the names and IDs for up to 10 files.
$optParams = array(
'pageSize' => 1,
'fields' => 'nextPageToken, files(id, name)'
);
$results = $service->files->listFiles($optParams);
if (count($results->getFiles()) == 0) {
print "No files found.\n";
} else {
print "Files:\n";
foreach ($results->getFiles() as $file) {
printf("%s (%s)\n", $file->getName(), $file->getId());
print($file->getDownloadUrl());
}
}
Кстати, у клиента есть авторизациядля загрузки файлов, потому что я определил это так:
$client->setScopes(Google_Service_Drive::DRIVE_READONLY);
РЕДАКТИРОВАТЬ:
Наконец, я смог загрузить файлы PDF со следующим кодом:
// Get the API client and construct the service object.
$client = getClient();
$service = new Google_Service_Drive($client);
// Print the names and IDs for up to 3 files.
$optParams = array(
'pageSize' => 3,
'fields' => 'nextPageToken, files(id, name)'
);
$results = $service->files->listFiles($optParams);
if (count($results->getFiles()) == 0) {
print "No files found.\n";
} else {
print "Files:\n";
foreach ($results->getFiles() as $file) {
printf("%s (%s)\n", $file->getName(), $file->getId());
$fileId = $file->getId();
$fileToDown = $service->files->get($fileId, array('alt' => 'media'));
file_put_contents($file->getName(),$fileToDown->getBody());
}
}