Я пытаюсь загрузить 50-мегабайтный файл в папку на моем аккаунте Google Диска.Загрузить файл на диск Google с помощью cron execute PHP
Алгоритм:
- Cron запускает PHP - PHP MySQL дамп базы данных и сжатие и шифрование файлов;
- Тот же скрипт PHP запускает другой скрипт и поставляет имя файла. Этот скрипт должен использовать Google Drive API для загрузки файла в мою учетную запись Google Диска.
Затем файл должен быть доступен на моем Google Диске blahblahblah/backup.sql.tar.gz
Но это не так. И я уверен, что все не удается с частичной загрузки, без вывода.
Я даже не знаю, как, черт возьми, я должен получить секрет клиента? Я пытался Dev консоль, но я только получаю:
CLIENT ID
CERTIFICATE FINGERPRINTS
API KEY
я пытался до сих пор:
https://developers.google.com/drive/web/quickstart/quickstart-php https://github.com/google/google-api-php-client/tree/master/examples
А также это:
<?PHP
/**
* Insert new file.
*
* @param Google_DriveService $service Drive API service instance.
* @param string $title Title of the file to insert, including the extension.
* @param string $description Description of the file to insert.
* @param string $parentId Parent folder's ID.
* @param string $mimeType MIME type of the file to insert.
* @param string $filename Filename of the file to insert.
* @return Google_DriveFile The file that was inserted. NULL is returned if an API error occurred.
*/
function insertFile($service, $title, $description, $parentId, $mimeType, $filename) {
$file = new Google_DriveFile();
$file->setTitle($title);
$file->setDescription($description);
$file->setMimeType($mimeType);
// Set the parent folder.
if ($parentId != null) {
$parent = new Google_ParentReference();
$parent->setId($parentId);
$file->setParents(array($parent));
}
try {
$data = file_get_contents($filename);
$createdFile = $service->files->insert($file, array(
'data' => $data,
'mimeType' => $mimeType,
'uploadType' => 'media'
));
// Uncomment the following line to print the File ID
// print 'File ID: %s' % $createdFile->getId();
return $createdFile;
} catch (Exception $e) {
print "An error occurred: " . $e->getMessage();
}
}
Я использую последнюю версию API Google PHP-клиентская библиотека.
Могу ли я получить простой PHP-код, который будет работать из коробки, используя API и загружая файл?
Действия пользователя не задействованы. Мне не нужно авторизовать пользователя. Все должно быть сделано на стороне сервера.
Вы говорите: «Повторяю, никаких действий, связанных с USER, нет». но, конечно же, в какой-то момент пользователь (даже если это вы) должен разрешить приложение (даже если это ваше приложение) получить доступ к вашему Google Диску. Это фундаментальная часть OAuth. См. Https://developers.google.com/api-client-library/php/guide/aaa_oauth2_web. В коде, который вы опубликовали, как вы создали объект службы $? При отладке OAuth/Drive всегда стоит сбросить пакеты http, чтобы увидеть, что происходит с проводом, и любые ответы. – pinoyyid
Поскольку это резервная копия MySQL, и это делается на стороне сервера полностью, я хочу сделать PHP, который будет использовать API Google для загрузки файла на диск Google. Это должно выполняться cron каждые 12 часов, поэтому, если, например, что-то происходит с моим сервером, резервная копия будет находиться на диске Google, готовом для развертывания на новом месте. – xZero
Я знаю, что вы хотите сделать.Мой вопрос: как вы решили разрешить свое приложение, чтобы иметь возможность доступа к вашему Google Диску? Я подозреваю, что вы не правильно поняли, как работает OAuth. – pinoyyid