Erro na conta de serviço do SDK do Google Drive "O usuário autenticado não instalou o aplicativo com o ID do cliente ..."
Estou tentando criar um aplicativo do Google Drive que possa ser executado em segundo plano (por exemplo, um cronjob), sem qualquer interação do usuário, usando a conta de serviço do SDK do Google Drive, mas isso me causa esse erro e não consigo entender o motivo:
Erro ao chamar o POSThttps://www.googleapis.com/upload/drive/v1/files?uploadType=multipart: (403) O usuário autenticado não instalou o aplicativo com o ID do cliente {my_client_id}
No Console de APIs do Google, eu ativei a Drive API e o Drive SDK. Na guia Drive SDK, eu configurei todas as informações necessárias. Também publiquei meu aplicativo para testadores apenas na Chrome Web Store e instalei-o no meu Google Chrome, e o nome do aplicativo aparece no menu "Criar" do meu Google Drive.
Este é um trecho do meu código:
<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>
Pelo que entendi, um aplicativo pode usar uma conta de serviço para o SDK do Google Drive em nome de um usuário. Isso significa que não há pergunta de autenticação (solicitação de permissões) para o usuário? Então, como o aplicativo se autentica? Ou meu entendimento provavelmente está errado? Por favor me ajude a me esclarecer aqui.