Google ドライブ SDK サービス アカウントを使用して、バックグラウンドで実行できる Google ドライブ アプリ (例: cronjob) をユーザーの操作なしで作成しようとしていますが、このエラーが発生し、理由がわかりません:
POST の呼び出しエラーhttps://www.googleapis.com/upload/drive/v1/files?uploadType=multipart : (403) 認証されたユーザーは、クライアント ID {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'
));
?>
私が理解していることから、アプリケーションはユーザーに代わって Google ドライブ SDK のサービス アカウントを使用できます。これは、ユーザーに対する認証の質問 (許可の要求) がないということですか? では、アプリケーションはどのように自身を認証するのでしょうか? それとも私の理解が間違っているのでしょうか?ここで私を啓発するのを手伝ってください。