Я использую G-Suite Google Drive и служебную учетную запись для подключения к общему диску. Я использую библиотеку API PHP. Ранее я выполнял эту работу на «обычном» диске Google, но мы переходим на общий диск (он же Team Drive)
Я могу использовать files-> listFiles () для получения списка файлов, используя:
$options = array('pageSize' => 100,
'corpora' => 'drive',
'supportsTeamDrives' => true,
'includeTeamDriveItems' => true,
'teamDriveId' => $sharedID,
'fields' => "nextPageToken, files(id, name)",
'q' => "'" . $pParentFolderID . "' in parents "
. " and name = \"" . $pFolderName . "\" "
. " and mimeType = 'application/vnd.google-apps.folder' "
. " and not trashed"
);
try{
$files_list = $this->drive_service->files->listFiles($optParams);
Это работает и дает мне идентификатор для указанного c файла / папки, которую я запрашиваю.
Однако попытка создать папку в верхней папке на диске приводит к ошибке 404, говоря, что файл / папка не найден, хотя я только что получил из нее правильный идентификатор.
$param =array( 'supportsAllDrives' => true,
'supportsTeamDrives' => true,
'teamDriveId' => $SharedID,
'parents' => array($pParentFolderID),
'name' => $pFolderName,
'mimeType' => 'application/vnd.google-apps.folder');
$fileMetadata = new Google_Service_Drive_DriveFile($param);
try {
$folderObj = $this->drive_service->files->create($fileMetadata, array('fields' => 'id'));
Я перепробовал все виды перестановок, но всегда получал 404. Я много раз проверял, что идентификатор файла для родителя правильный. Я пробовал использовать teamdriveid, driveid и другие варианты.
Это данные, которые я отправляю, и данные, которые я получаю от Google:
array(6) {
["supportsAllDrives"]=>
bool(true)
["supportsTeamDrives"]=>
bool(true)
["teamDriveId"]=>
string(19) "0ALay-iFeEOX6Uk9PVA"
["parents"]=>
array(1) {
[0]=>
string(33) "1oI72fkTb-AObYWBEOI-ykS5eDYg3L2ar"
}
["name"]=>
string(9) "FieldTest"
["mimeType"]=>
string(34) "application/vnd.google-apps.folder"
}
Trying to create:
Error from Google:array(1) {
["error"]=>
array(3) {
["errors"]=>
array(1) {
[0]=>
array(5) {
["domain"]=>
string(6) "global"
["reason"]=>
string(8) "notFound"
["message"]=>
string(50) "File not found: 1oI72fkTb-AObYWBEOI-ykS5eDYg3L2ar."
["locationType"]=>
string(9) "parameter"
["location"]=>
string(6) "fileId"
}
}
["code"]=>
int(404)
["message"]=>
string(50) "File not found: 1oI72fkTb-AObYWBEOI-ykS5eDYg3L2ar."
}
}
Этот процесс работает с «обычным» диском, но не работает на общем диске.
У кого-нибудь есть идеи, чего не хватает?