У меня проблемы с получением владельца файла на Google Диске через Google Drive API v3.
Я мог бы сделать это в v2, но все изменилось.
Согласно документация Мне нужно:
- Список разрешений для файла (без проблем)
- Найти Id разрешения с ролью владельца из этогосписок разрешений (без проблем)
- Получить это разрешение ... которое должно вернуть ресурс разрешений , который должен включать адрес электронной почты (проблема!)
К сожалению, то, что я получаю, включает некоторую информацию, но не адрес электронной почты.
Я подозреваю, что мне нужно изменить мой вызов "get", чтобы сообщить API, какие поля мне нужны, ноЯ не вижу, как это сделать.
Вот что у меня есть (v3):
from oauth2client.service_account import ServiceAccountCredentials
from httplib2 import Http
from apiclient.discovery import build
def build_service(user):
keyfile = 'C:\Python27\Scripts\Certificates for Transfer owner script\Transfer Ownership on Drive-f240cff252af.json'
SCOPE = 'https://www.googleapis.com/auth/drive'
credentials = ServiceAccountCredentials.from_json_keyfile_name(keyfile, scopes=SCOPE).create_delegated(user)
http_auth = credentials.authorize(Http())
return build('drive', 'v2', http=http_auth)
service = build_service('lpglobaldrive@lonelyplanet.com.au')
f = service.files().get(fileId='1lASRBuAHRxEC-T0X5SdlF3w7X_168Q2QV9L0V6QaXUk').execute()
p = service.permissions().get(fileId='1lASRBuAHRxEC-T0X5SdlF3w7X_168Q2QV9L0V6QaXUk',permissionId='18137907375963748644').execute()
currentOwner = p['emailAddress']
К сожалению, я получаю "KeyError: 'emailAddress'" (и еслиЯ смотрю на содержимое "p", там есть роль, вид, тип и идентификатор, но нет адреса электронной почты).
Thiу меня работает s (используя v2):
from oauth2client.service_account import ServiceAccountCredentials
from httplib2 import Http
from apiclient.discovery import build
def build_service(user):
keyfile = 'C:\Python27\Scripts\Certificates for Transfer owner script\Transfer Ownership on Drive-f240cff252af.json'
SCOPE = 'https://www.googleapis.com/auth/drive'
credentials = ServiceAccountCredentials.from_json_keyfile_name(keyfile, scopes=SCOPE).create_delegated(user)
http_auth = credentials.authorize(Http())
return build('drive', 'v2', http=http_auth)
service = build_service('lpglobaldrive@lonelyplanet.com.au')
f = service.files().get(fileId='1lASRBuAHRxEC-T0X5SdlF3w7X_168Q2QV9L0V6QaXUk').execute()
currentOwner = f['owners'][0]['emailAddress']