上传到团队驱动器的权限问题
Permissions issues with uploading to team drive
我一直在尝试使用以下代码设置 Google 驱动器 PHP API 以将简单文件上传到共享驱动器。
<?php
require_once '../../../php/Services/JSON.php';
require '../vendor/autoload.php';
require '../helper.php';
$chunkSizeBytes = 1048576;
$client = new Google_Client();
$client->setAuthConfig(__DIR__.'/SERVICE-ACCOUNT-CREDENTIALS.json');
$client->setApplicationName('Uploader');
$client->setScopes(Google_Service_Drive::DRIVE);
$client->setDefer(true);
$file = 'testUpload.txt';
$service = new Google_Service_Drive($client);
$params = [
'fields' => 'id',
'supportsAllDrives' => true
];
$req = $service->files->create(new Google_Service_Drive_DriveFile([
'name' => $file,
'teamDriveId' => 'DRIVE ID',
'parents' => '1Ik-tFv8UaOmlnZ3ojgPPba0o3hauh_63',
'mimeType' => Helper::get_mime_type($file)
]), $params);
$media = new Google_Http_MediaFileUpload($client, $req, Helper::get_mime_type($file), null, true, $chunkSizeBytes);
$media->setFileSize(filesize($file));
$status = false;
$fileHandler = fopen($file, 'rb');
while(!$status and !feof($fileHandler)) {
$chunk = fread($fileHandler, $chunkSizeBytes);
$status = $media->nextChunk($chunk);
}
fclose($fileHandler);
$client->setDefer(false);
echo "https://drive.google.com/open?id=".$status['id']."\n";
在 运行 这段代码之后,它给了我一个 link 文件,但是当我访问 link 时,它说我需要访问该文件的权限。当我打开共享驱动器上的文件夹时,该文件无处可见,因此正在上传,但据我所知没有上传到正确的位置。我想确保此文件已上传到共享驱动器和指定的文件夹,但到目前为止我还不能这样做。我知道 API 中的一些参数已被弃用,但我很确定我使用的所有参数都没有被弃用。我不确定我做错了什么,所以任何额外的指导将不胜感激,谢谢!
服务器账号不是你。服务帐户正在那里上传文件,因为它拥有该文件。如果您想访问它,请通过服务帐户授予您访问它的权限 permissions.create
$optParams = array(
'emailMessage' => '[YourValue]',
'sendNotificationEmail' => '[YourValue]',
'supportsTeamDrives' => '[YourValue]',
'transferOwnership' => '[YourValue]',
'fields' => '*'
);
return $service->permissions->CreatePermissions($fileId, $optParams);
另外记得在初始文件上传中添加supportsAllDrives
参数。
我一直在尝试使用以下代码设置 Google 驱动器 PHP API 以将简单文件上传到共享驱动器。
<?php
require_once '../../../php/Services/JSON.php';
require '../vendor/autoload.php';
require '../helper.php';
$chunkSizeBytes = 1048576;
$client = new Google_Client();
$client->setAuthConfig(__DIR__.'/SERVICE-ACCOUNT-CREDENTIALS.json');
$client->setApplicationName('Uploader');
$client->setScopes(Google_Service_Drive::DRIVE);
$client->setDefer(true);
$file = 'testUpload.txt';
$service = new Google_Service_Drive($client);
$params = [
'fields' => 'id',
'supportsAllDrives' => true
];
$req = $service->files->create(new Google_Service_Drive_DriveFile([
'name' => $file,
'teamDriveId' => 'DRIVE ID',
'parents' => '1Ik-tFv8UaOmlnZ3ojgPPba0o3hauh_63',
'mimeType' => Helper::get_mime_type($file)
]), $params);
$media = new Google_Http_MediaFileUpload($client, $req, Helper::get_mime_type($file), null, true, $chunkSizeBytes);
$media->setFileSize(filesize($file));
$status = false;
$fileHandler = fopen($file, 'rb');
while(!$status and !feof($fileHandler)) {
$chunk = fread($fileHandler, $chunkSizeBytes);
$status = $media->nextChunk($chunk);
}
fclose($fileHandler);
$client->setDefer(false);
echo "https://drive.google.com/open?id=".$status['id']."\n";
在 运行 这段代码之后,它给了我一个 link 文件,但是当我访问 link 时,它说我需要访问该文件的权限。当我打开共享驱动器上的文件夹时,该文件无处可见,因此正在上传,但据我所知没有上传到正确的位置。我想确保此文件已上传到共享驱动器和指定的文件夹,但到目前为止我还不能这样做。我知道 API 中的一些参数已被弃用,但我很确定我使用的所有参数都没有被弃用。我不确定我做错了什么,所以任何额外的指导将不胜感激,谢谢!
服务器账号不是你。服务帐户正在那里上传文件,因为它拥有该文件。如果您想访问它,请通过服务帐户授予您访问它的权限 permissions.create
$optParams = array(
'emailMessage' => '[YourValue]',
'sendNotificationEmail' => '[YourValue]',
'supportsTeamDrives' => '[YourValue]',
'transferOwnership' => '[YourValue]',
'fields' => '*'
);
return $service->permissions->CreatePermissions($fileId, $optParams);
另外记得在初始文件上传中添加supportsAllDrives
参数。