Как составить список файлов Google Диска, к которым не предоставлен общий доступ в организации
Я пытаюсь получить все файлы Google Диска, созданные пользователями в моей организации (установлены делегирование домена и роль диска ).
srv.Files.List().Corpora("domain").Fields("*").Q(modifiedTime).PageSize(1000).Pages(d.ctx, listFiles)
Хотя в результате такого вызова возвращаются только те файлы, для которых в настройках общего доступа включен параметр «Люди в [КОМПАНИЯ] могут искать этот файл» .
Если я выдам себя за другого пользователя и изменю
Corpora("domain")
к
Corpora("user")
Я могу перечислить все файлы, но это не оптимально, если у меня тысячи пользователей.
Как я могу вывести список всех файлов в моей организации, включая те, к которым нет общего доступа?
1 ответ
Делегирование на уровне домена работает так, что оно позволяет учетной записи службы олицетворять или действовать как отдельный пользователь. Учетная запись службы не просто получает доступ для записи ко всем данным.
Это связано с ограничением работы APIS. Каждый запрос к API должен включать заголовок авторизации, который содержит токен доступа, предоставляющий доступ к данным одного пользователя. Если вы хотите получить доступ к данным Джона, вам нужен токен доступа для Джона, это не даст вам доступа к данным Джона и Джейн.
Таким образом, чтобы учетная запись службы работала, вы должны иметь возможность делегировать полномочия Джону, а затем отправить другой запрос, делегирующий Джейн доступ к ее данным.
Это может быть не оптимальным для вашего приложения, но так оно и есть. Вам нужно будет делегировать каждому пользователю по одному.