GCP Python - Google TeamDrive API - Разрешения

Был бы очень признателен за совет при работе с частью разрешений API общего диска Google: https://developers.google.com/drive/v3/reference/permissions

В настоящее время я пишу фрагмент кода, который будет создавать общий диск, создавать некоторые файлы (папка mimetype) на командном диске по идентификатору, а затем добавлять пользователя на общий диск как группу.

Код успешно создает общий диск и папки для каждого из них, используя API, однако, когда я добавляю пользователя на командный диск, мой ответ полностью отличается, например:

def build_google_teamdrive(drive_name):
credentials = get_credentials()
http = credentials.authorize(httplib2.Http())
service = discovery.build('drive', 'v3', http=http)

team_drive_metadata = {'name': drive_name, "colorRgb": "#004e37"}
request_id = str(uuid.uuid4())

response = service.teamdrives().create(body=team_drive_metadata, requestId=request_id).execute()
logger.info('Creating Team Drive for: {}'.format(drive_name))
print(response)
return response

Это возвращает ожидаемый ответ:

{u'kind': u'drive#teamDrive', u'id': u'0AFlsLbuvuChJUk9PVA', u'name': u'TeamDriveName'}

Это подтверждает, что код выполнен ожидаемым, то же самое с .files ().

Теперь, когда я пытаюсь добавить участника (группу) на общий диск, я получаю что-то совершенно другое:

def test_insert():
viewer_group = '[email protected]'
drive_unique_id = '0BKk5OjdX66ooUk9PVA'
credentials = get_credentials()
http = credentials.authorize(httplib2.Http())
service = discovery.build('drive', 'v3', http=http)

resource = {
    "role": "reader",
    "type": "group",
    "emailAddress": viewer_group
}

response = service.permissions().create(fileId=drive_unique_id, body=resource, supportsTeamDrives=True, sendNotificationEmail=False)
print(response)
return response

Это возвращает ответ:

<googleapiclient.http.HttpRequest object at 0x104e741d0>

При использовании API вставки разрешений: ожидаемый ответ был:

{"kind": "drive#permission","id": "00723864391275245674","type": "group","role": "reader"}

Если бы я мог получить какую-либо помощь по этой проблеме, я был бы очень признателен, так как я действительно сбит с толку, как это не работает.

Спасибо, PyJordan




Ответы (1)


Глядя на код, становится ясно, почему ответ не вернулся, как ожидалось, посмотрите здесь:

response = service.teamdrives().create(body=team_drive_metadata, requestId=request_id).execute()

Как вы можете видеть в конце ответа, вы написали:

.execute()

Исправить просто, в своем коде вы написали:

response = service.permissions().create(fileId=drive_unique_id, body=resource, supportsTeamDrives=True, sendNotificationEmail=False)

Сейчас я исправлю это для вас:

response = service.permissions().create(fileId=drive_unique_id, body=resource, supportsTeamDrives=True, sendNotificationEmail=False).execute()

Надеюсь, что это помогает и удачи.

VS

person Vikram Shinde    schedule 21.03.2018
comment
Спасибо! Это сработало отлично! Похоже, это был долгий день! Проголосовали! - person Py.Jordan; 21.03.2018