Вопрос по php – Ошибка учетной записи службы Google Drive SDK «Аутентифицированный пользователь не установил приложение с идентификатором клиента…»

3

Я пытаюсь создать приложение Google Drive, которое может работать в фоновом режиме (например, cronjob), без какого-либо взаимодействия с пользователем, используя учетную запись службы Google Drive SDK, но оно дает мне эту ошибку, и я не могу понять, почему:

Error calling POST https://www.googleapis.com/upload/drive/v1/files?uploadType=multipart: (403) The authenticated user has not installed the app with client id {my_client_id}

На консоли API Google я активировал Drive API и Drive SDK. На вкладке Drive SDK я настроил всю необходимую информацию. Я также опубликовал свое приложение для тестировщиков только в Интернет-магазине Chrome и установил его в свой Google Chrome, а имя приложения появилось на моем Google Диске & quot; Создать & quot; меню.

Это фрагмент моего кода:

<code><?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'
));

?>
</code>

Насколько я понимаю, приложение может использовать служебную учетную запись для Google Drive SDK от имени пользователя. Означает ли это, что у пользователя нет вопроса об аутентификации (запросе разрешений)? Тогда как приложение аутентифицирует себя? Или мое понимание, вероятно, неправильно? Пожалуйста, помогите просветить меня здесь.

Ваш Ответ

1   ответ
2

пасности.

Я бы предложил открыть (или создать) файл из веб-интерфейса Drive вместе с приложением и сохранить полученные токены доступа и обновления, которые вы получите после завершения процесса авторизации OAuth 2.0.

Из задания cron просто извлеките эти учетные данные для отправки авторизованных запросов в Drive API от имени вашего пользователя.

Я сделал это, и это работает, спасибо! :) Irwan

Похожие вопросы