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

Я пытаюсь найти способ передать право собственности на файл на 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@gmail.com ');  $ optParams = array ('transferOwnership' => 'true');  $ service-> permissions-> create ($ file-> id, $ newPermission, $ optParams);}  

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


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

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

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

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

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

UPDATE

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

В частности:

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

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

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

    $ client-> setSubject ($ EmailOfUserToImpersonate);

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