Я пытаюсь создать приложение Google Диска, которое может работать в фоновом режиме (например, cronjob) без какого-либо взаимодействия с пользователем, используя учетную запись службы SDK Google Диска, но оно выдает мне эту ошибку, и я не могу понять, почему:
Ошибка при вызове POST https://www.googleapis.com/upload/drive/v1/files?uploadType=multipart: (403) Авторизованный пользователь не установил приложение с идентификатором клиента {my_client_id}
В консоли Google API я активировал Drive API и Drive SDK. На вкладке Drive SDK я настроил всю необходимую информацию. Я также опубликовал свое приложение для тестировщиков только в Интернет-магазине Chrome и установил его в свой Google Chrome, и имя приложения появилось в меню «Создать» на моем Google Диске.
Это фрагмент моего кода:
<?php
require_once dirname(__FILE__).'/google-api-php-client/src/apiClient.php';
require_once dirname(__FILE__).'/google-api-php-client/src/contrib/apiDriveService.php';
$apiClient = new apiClient();
$apiClient->setClientId(DRIVE_CLIENT_ID);
$apiClient->setClientSecret(DRIVE_CLIENT_SECRET);
$apiClient->setAssertionCredentials(new apiAssertionCredentials(
OAUTH2_EMAIL,
array('https://www.googleapis.com/auth/drive.file'),
file_get_contents(SERVICE_ACCOUNT_PRIVATEKEY_FILE))
);
$apiDriveService = new apiDriveService($apiClient);
$file = new DriveFile();
$file->setTitle('filename.txt');
$file->setMimeType('text/plain');
$createdFile = $apiDriveService->files->insert($file, array(
'data' => 'file content goes here....',
'mimeType' => 'text/plain'
));
?>
Насколько я понимаю, приложение может использовать учетную запись службы для SDK Google Диска от имени пользователя. Означает ли это, что у пользователя нет вопроса аутентификации (запроса разрешений)? Тогда как приложение аутентифицирует себя? Или мое понимание, вероятно, неправильно? Пожалуйста, помогите просветить меня здесь.