В настоящее время я использую учетную запись службы Google, для которой включено делегирование по всему домену (я перешел по этой ссылке https://developers.google.com/identity/protocols/oauth2/service-account и по этой ссылке https://developers.google.com/admin-sdk/reports/v1/guides/delegation) и имеет "https://www.googleapis.com/auth/drive область включена. Я загрузил учетные данные json для учетной записи службы и поместил их в тот же каталог, что и мой сценарий python. Проблема заключается в том, что я олицетворяю другой пользователь разрешает использовать имя пользователя User2 в моем домене, и я пытаюсь перечислить файлы на диске пользователя 2. Я получаю файлы только на диске своей учетной записи службы.
У меня есть фрагмент кода, который выполняет олицетворение пользователя 2 .
def auth():
domain = 'domain'
# impersonate this user
user = 'testuser' # id only (ie. without @domain)
#scopes = ['https://www.googleapis.com/auth/drive',]
key_file = 'service_account.json'
subject = ''.join([user,'@',domain])
delegated_credentials = service_account.Credentials.from_service_account_file(key_file)
delegated_credentials.with_subject(subject)
drive_service = googleapiclient.discovery.build('drive', 'v2', credentials=delegated_credentials)
return drive_service
Затем, позже, я пытаюсь получить список файлов в mydrive пользователей.
children = service.children().list(folderId='root', **param).execute()
for child in children.get('items', []):
item = service.files().get(fileId=child['id']).execute()
Над элементом всегда есть «Начало работы PDF» в учетной записи службы. мой диск
В основном вся цель этого состоит в том, чтобы программно изменить владельца любой папки (плюс ее содержимое) на другого пользователя в том же G-Suite.
Кроме того, я не хочу поделиться папкой с моим Сервисный аккаунт, как говорят многие другие посты. Это не должно иметь место, так как я выдаю себя за владельца.
Я прошу прощения, если это не правильный способ задать вопрос. Это мой первый пост.