Я хочу загрузить файлы на Google Drive с помощью API, но мне нужно сделать это с помощью задания cron (автоматическое резервное копирование веб-файлов + sql на Google диск).
Это означает (я полагаю), что мне нужно пройти аутентификацию, используя что-то, кроме метода взаимодействия с пользователем.
Пример, который я использовал: https://developers.google.com/api-client-library/php/auth/web-app, чтобы заставить меня работатьи его работа с аутентификацией пользователя.
Буду признателен за несколько советов о том, как сделать это без взаимодействия с пользователем, чтобы он мог работать на cronjob.
Вот код PHP для аутентификации изагрузить файл (рабочий пример с ручной аутентификацией пользователя и загрузкой одного файла)
<?php
require_once 'google-api-php-client/vendor/autoload.php';
/* Config */
$servername = 'content here';
$redirect_uri = 'https://example.com/';
$client = new Google_Client();
$client->setAuthConfig('client_manual_authentiation.json');
$client->addScope(Google_Service_Drive::DRIVE);
if(isset($_SESSION['access_token']) && $_SESSION['access_token']) {
$client->setAccessToken($_SESSION['access_token']);
$drive = new Google_Service_Drive($client);
foreach($drive->files->listFiles(array("q" => "name = '{$servername}'"))->getFiles() as $key => $element){
if($element->name == $servername){
//create todays folder on Google Drive
$today_folder_meta = new Google_Service_Drive_DriveFile(array(
'name' => 'myfile.txt',
'mimeType' => 'application/vnd.google-apps.folder',
'parents' => array($element['id'])
));
$today_folder = $drive->files->create($today_folder_meta, array(
'fields' => 'id'
));
}
}
}else{
if (!isset($_GET['code'])) {
$auth_url = $client->createAuthUrl();
header('Location: ' . filter_var($auth_url, FILTER_SANITIZE_URL));
} else {
$client->authenticate($_GET['code']);
$_SESSION['access_token'] = $client->getAccessToken();
header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL));
}
}
?>