Как передать право собственности на файл на Google Диске, не являющийся частью Документов?

Как передать право собственности на файл на Google Диске, не являющийся частью Документов?
На чтение
12 мин.
Просмотров
12
Дата обновления
11.11.2024

Я пытаюсь найти способ передать право собственности на файл на Google Диске другому пользователю. Я могу поделиться файлом с другим пользователем, но не могу найти способ передать право собственности на файл. Кажется, есть решения для Документов, Таблиц и Презентаций Google, но не для обычных файлов, таких как .mp4 или .mov .

Право собственности на файл имеет значение по нескольким причинам, одна из которых заключается в том, что файл засчитывается по квоте владельца файла.


Кажется, нет способа сделать это, но я нашел обходной путь. Допустим, A хочет передать право собственности на файл B.

  1. A предоставляет доступ к файлу B.
  2. B входит в систему и делает скопируйте файл, щелкнув его правой кнопкой мыши и выбрав «сделать копию».
  3. A или B теперь могут удалить исходный файл.
  4. Новый файл можно переименовать так, чтобы оно совпадало с именем исходного файла. К новому файлу также необходимо предоставить доступ A.

К сожалению, любые ссылки на старый файл не будут указывать на новый файл.



Невозможно передать право собственности на файл из учетной записи службы пользователю диска Google

При попытке передать право собственности я получаю следующую ошибку:

  "домен": "глобальный", "причина": "invalidSharingRequest", "сообщение": "неверный запрос. Сообщение пользователя: " Вы не можете изменить владельца этого элемента.  ""  

Вот мой код:

  использовать Google_Client;  использовать Google_Service_Drive; использовать Google_Service_Drive_DriveFile; использовать Google_Service_Drive_Permission; общедоступную функцию uploadDocument () {$ FOLDER_ID = 'my_folder_ID_string';  $ client = новый Google_Client ();  $ client-> setAuthConfig (base_path ('service_account_credentials.json'));  $ client-> setScopes (массив ('https://www.googleapis.com/auth/drive'));  $ service = новый Google_Service_Drive ($ client);  $ fileMetadata = новый Google_Service_Drive_DriveFile (array ('name' => 'Test.pdf', 'parent' => [$ FOLDER_ID]));  $ content = file_get_contents (public_path ('tmp/Test.pdf'));  $ file = $ service-> files-> create ($ fileMetadata, array ('data' => $ content, 'mimeType' => 'application/pdf', 'uploadType' => 'multipart', 'fields' =>).  'я бы' )); //Передача права собственности $ newPermission = new Google_Service_Drive_Permission ();  $ newPermission-> setRole ('владелец');  $ newPermission-> setType ('пользователь');  $ newPermission-> setEmailAddress ('[email protected] ');  $ optParams = array ('transferOwnership' => 'true');  $ service-> permissions-> create ($ file-> id, $ newPermission, $ optParams);}  

Папка успешно загружена на Google Диск в общую папку (владелец это ’email @ gmail. com ‘, служебная учетная запись — «editor»), однако владельцем загруженного файла является служебная учетная запись, а редактором — «[email protected]».


Вы не можете изменить владельца файла, расположенного на общем диске

Согласно документации:

Файлы на общем диске принадлежат общему диску, а не отдельные пользователи.

Следовательно, нет необходимости «отбирать» право собственности у учетной записи службы.

Вы можете заставить пользователей предоставлять любые другая роль, например органайзер , который позволит пользователю переместить файл с общего диска и, таким образом, стать владельцем файла.

UPDATE

Если файлы загружаются учетной записью службы в общую папку на Диске пользователя, а не на общий Диск, ситуация иная.

В частности:

  • Для пользователей GSuite передача права собственности за пределы домена не разрешена и приведет к ошибке Право собственности может быть передано только другому пользователю в той же организации, что и текущий владелец. .
  • Учетная запись службы не считается пользователем домена и поэтому на нее распространяются те же ограничения.
  • Для пользователей-потребителей передача права собственности из учетной записи службы пользователю разрешена, но ограничена: Только для документов Google mimeType можно изменить владельца.
  • В связи с указанными выше ограничениями передачи права собственности из службы учетной записи пользователя, лучше избежать проблемы, используя олицетворение.
  • Олицетворение означает, что учетная запись службы действует от имени пользователя (например, вы), а когда он загружает файлы на ваш Диск, это эквивалентно тому, когда вы загружаете файлы самостоятельно — передача права собственности не требуется, никакого явного совместного использования папки с учетной записью службы не требуется.
  • Чтобы настроить олицетворение, вам необходимо
  • Включить делегирование домена для конкретной учетной записи службы в консоли GCP.

  • Авторизуйте все области, необходимые для учетной записи службы, в консоли администратора, выбрав Безопасность> Элементы управления API> Делегирование на уровне домена .

  • Измените свой код, добавив строку

    $ client-> setSubject ($ EmailOfUserToImpersonate);

  • Имейте в виду, что, к сожалению, делегирование всего домена возможно только для доменов, то есть учетных записей GSuite.
  • Для учетных записей потребителей (gmail) это невозможно передать право собственности на mimeType, не принадлежащий Google, из учетной записи службы пользователю.
  • В качестве временного решения пользователь может сделать копию файла, загруженного учетная запись службы — впоследствии учетная запись службы может удалить исходный файл.
0 Комментариев
Комментариев на модерации: 0
Оставьте комментарий