Google Drive Api PHP Создание папки и открытие доступа по ссылке
Задача стоит такая: при регистрации на сайте для каждого человека должна создаваться папка на моем гугл диске и ему на почту высылается ссылка, по которой он может перейти к данной папке и увидеть содержимое. Пробовал уже огромное количество способов в интернете, но ничего не получается. Если делать через Oauth2 , то через какое-то время access token становится просроченным и требует опять аунтефикация через выбор аккаунта в браузере, такой метод совсем не подходит. Второй способ через сервисный аккаунт, с ним все окей, научился создавать папку и подпапку, но проблема в том что это гугл диск сервисного аккаунта, в своем основном аккаунте я не вижу этих файлов папок, да и неизвестно сколько там места доступно. Есть ли какое-то решение данной проблемы? Нужно чтобы я один раз получил доступ и он все время работал и через мой создавались папки в моем гугл диске. Вот код который удалось собрать по гайдам из интернета. Был бы очень благодарен решению данной проблемы!
<?php
include_once 'vendor/autoload.php';
$client = new Google_Client();
$client->addScope(
"https://www.googleapis.com/auth/drive",
"https://www.googleapis.com/auth/drive.appfolder");
$client->setAccessType('offline');
$client->setPrompt('consent');
//Файл с необходимыми данными для подключения к сервисному аккаунту
$credentials_file = 'service-account-credentials.json';
if ($credentials_file) {
$client->setAuthConfig($credentials_file);
} elseif (getenv('GOOGLE_APPLICATION_CREDENTIALS')) {
$client->useApplicationDefaultCredentials();
} else {
echo missingServiceAccountDetailsWarning();
return;
}
$service = new Google_Service_Drive($client);
//Создаю подпапку в папке на диске
$folder = new Google_Service_Drive_DriveFile();
$folder->setName('Folder name');
$folder->setMimeType('application/vnd.google-apps.folder');
$folder->setParents('1fNigXzT4onl9PqoPvijvVZn_JICH981V');
$result = $service->files->create($folder);
//Функция для вывода содержимого на диске (показывает диск сервисного аккаунта)
function get_files_and_folders($client){
$service = new Google_Service_Drive($client);
$parameters['q'] = "'root' in parents and trashed=false";
$files = $service->files->listFiles($parameters);
echo "<ul>";
foreach( $files as $k => $file ){
echo "<li>
{$file['name']} - {$file['id']} ---- ".$file['mimeType'];
try {
// subfiles
$sub_files = $service->files->listFiles(array('q' => "'{$file['id']}' in parents"));
echo "<ul>";
foreach( $sub_files as $kk => $sub_file ) {
echo "<li> SUB {$sub_file['name']} - {$sub_file['id']} ---- ". $sub_file['mimeType'] ." </li>";
}
echo "</ul>";
} catch (\Throwable $th) {
// dd($th);
}
echo "</li>";
}
echo "</ul>";
}
get_files_and_folders($client);
?>```