API — это программный интерфейс, который позволяет взаимодействовать с приложением по средствам простых команд. Для того чтобы воспользоваться API от Google надо сначала создать проект, в рамках которого будет использоваться API. Переходим на страницу создания проекта в Google Cloud. При первом посещении выбираем страну. Создаем новый проект — заполняем Project name, редактируем Project ID. В Location оставляем No organization. Жмем Create.
После создания проекта, откроется личный кабинет в Google Cloud. В поиске вбиваем google drive api и выбираем соответствующий пункт.

Попадаем на страницу Product details для Google Drive API жмем Enable. Откроется страница управления Google Drive API. Переходим в Credentials и в Create Credentials выбираем тип Service account.

В Service account details заполняем поля Service account name и Service account ID. Жмем Create and continue.

Пропускаем Grant this service account access нажав Continue. И Grant users access to this service account нажав Done Наш свежесозданный сервисный аккаунт появился в списке учетных данных. Жмем на него.

Переходим в закладку KEYS, и добавляем новый ключ нажав ADD KEY -> Create new key

Тип ключа выбираем JSON. После создания ключа, будет автоматически скачан файл с расширением .json Используя данный файл ключа настроим загрузку файлов с сервера на Google диск.
Google API может работать с разными языками программирования, для этого компания поддерживает несколько API клиентов. На нашем хосте развернут стек LEMP, а значит уже используется интерпретатор PHP. Соответственно скачаем PHP клиент. Создадим под него отдельную директорию и скачаем с официального репозитория.
[root@waky gdt]# mkdir /usr/local/bin/google-api-php-client
[root@waky gdt]# cd /usr/local/bin/google-api-php-client
[root@waky google-api-php-client]# wget https://github.com/googleapis/google-api-php-client/releases/download/v2.18.2/google-api-php-client--PHP8.0.zip
[root@waky google-api-php-client]# unzip google-api-php-client--PHP8.0.zip
Либо загрузите в ту же директорию ключевой файл, либо создайте новый с помощью текстового редактора и скопируйте в него содержимое ключевого файла. В данном примере файл с ключевой информацией будет назван your_key_file.json В этой же директории создадим скрип который загрузит тестовый файл на Google диск. В качестве тестового файла создадим в этой же директории простой текстовый файл:
[root@waky google-api-php-client]# echo "Test file content" > test_file.txt
Используя текстовый редактор создадим новый файл со следующим скриптом:vi file_upload.php
<?php
require_once './vendor/autoload.php';
#Определение параметров и учетных данных клиента
$client = new Google\Client();
$client->setApplicationName("GOOGLE DRIVE integration");
$client->setAuthConfig('./your_key_file.json');
$client->addScope(Google_Service_Drive::DRIVE);
$driveService = new Google_Service_Drive($client);
#Определение мета данных файла
$fileMetadata = new Google_Service_Drive_DriveFile(array(
'name' => 'test_file.txt',
'mimeType' => 'application/vnd.google-apps.document'
));
#Получение содержимого файла
$content = file_get_contents('./test_file.txt');
#Создание файла на Google диске
$file = $driveService->files->create($fileMetadata, array(
'data' => $content,
'mimeType' => 'application/vnd.google-apps.document',
'uploadType' => 'resumable',
'fields' => 'id'));
#Параметры нашего Google пользователя укажите свой gmail адрес
$mail="username@gmail.com";
$type="user";
$role="writer";
#Добавление нашему пользователю прав на файл созданный на Google диске
$newPermission = new Google_Service_Drive_Permission();
$newPermission->setEmailAddress($mail);
$newPermission->setType($type);
$newPermission->setRole($role);
$driveService->permissions->create($file->id, $newPermission);
?>
Запустим наш скрипт:php file_upload.php
Скрипт отработал без проблем проверим наш Google диск. Заходим в диск под пользователем, которого указали в $mail. Ему было выдано разрешение на доступ к новому файлу. Новый файл не принадлежит нашему пользователю, но находится в его доступе. Проверяем вкладку Доступные мне и видим наш тестовый файл.
