PHP を使用して、ランタイムで作成されたファイルを特定の Google ドライブ アカウントに配置しています。
アカウントで Google にログオンし、スクリプトを起動すると、別のアカウントのクライアント ID とシークレットを使用しても、これらのファイルはこのアカウントにアップロードされます。
ユースケース:
a@gmail.com でログインし、スクリプトを使用すると、ファイルは b@gmail.com の Google ドライブではなく、a@gmail.com の Google ドライブに送信されます。
@gmail.com アカウントでログインしている場合でも、これらのファイルを b@gmail.com アカウントにアップロードするにはどうすればよいですか?
ありがとう
元。コード
<?php
require_once 'google-api-php-client/src/Google_Client.php';
require_once 'google-api-php-client/src/contrib/Google_DriveService.php';
$drive = new Google_Client();
$drive->setClientId(/*client id*/);
$drive->setClientSecret(/*client secret*/);
$drive->setRedirectUri(/*redirect uri (the same URI in the API configuration)*/);
$drive->setScopes(array('https://www.googleapis.com/auth/drive'));
$gdrive = new Google_DriveService($drive);
file_put_contents('token.json', $drive->authenticate());
$drive->setAccessToken(file_get_contents('token.json'));
$file = new Google_DriveFile();
$file->setTitle('My document');
$file->setDescription('A test document');
$file->setMimeType('text/plain');
$createdFile = $service->files->insert($file, array(
'data' => 'example',
'mimeType' => 'text/plain',
));
return true;
編集:
パスファインダー ソリューションを使用し、サービス アカウントを作成します。動作しているようですが、まだ問題があります。実行の最後に、gDrive で自分のファイルを見つけることができません...ドキュメントを読んでも、無効な構成を行った可能性があります...
これはコードです:
<?php
require_once 'google-api-php-client/src/Google_Client.php';
require_once 'google-api-php-client/src/contrib/Google_DriveService.php';
require_once 'google-api-php-client/src/contrib/Google_Oauth2Service.php';
$DRIVE_SCOPE = 'https://www.googleapis.com/auth/drive';
$SERVICE_ACCOUNT_EMAIL = '<email_in_api_access>@developer.gserviceaccount.com';
$SERVICE_ACCOUNT_PKCS12_FILE_PATH = 'google-api-phpclient/<api_key_file>-privatekey.p12';
$key = file_get_contents($SERVICE_ACCOUNT_PKCS12_FILE_PATH);
$auth = new Google_AssertionCredentials(
$SERVICE_ACCOUNT_EMAIL,
array($DRIVE_SCOPE),
$key);
$client = new Google_Client();
$client->setUseObjects(true);
$client->setAssertionCredentials($auth);
$gdrive = new Google_DriveService($client);
$file = new Google_DriveFile();
$file->setTitle('My document');
$file->setDescription('A test document');
$file->setMimeType('text/plain');
$createdFile = $gdrive->files->insert($file, array(
'data' => 'A test document',
'mimeType' => 'text/plain',
));
return true;