2016-05-23 3 views
0

Я использую Google Диск, а мой код использует v3 для работы с файлами по учетной записи службы. Я могу прочитать, скачать файл, но не могу удалить. Я пробовал с v2 delete (я не нашел v3 delete) и никаких работ (не разрешений). Я пробовал после того, как V2 выдал себя за учетную запись администратора и никаких работ.Удалить файл в v3 с помощью Python [Учетная запись службы]

В последнее время я пытался с this link, но не работает для каких-либо областей

def get_credenciales_with_impersonate():  
    delegated_credentials = get_credenciales().create_delegated(admin_email) 
    from httplib2 import Http 
    http_auth = get_credenciales().authorize(Http()) 
    print(type(http_auth)) 
    return http_auth 

...

serviceV2Impersonate = discovery.build('drive','v2',http=get_credenciales_with_impersonate()) 

Мои обычные учетные данные есть:

def get_credenciales(): 
    credenciales = ServiceAccountCredentials.from_p12_keyfile(
    client_email,p12_file) 
    return credenciales 

и работает

serviceV2 = discovery.build('drive','v2',credentials=credentials) 
serviceV3 = discovery.build('drive','v3',credentials=credentials) 

Как я могу удалить файл с диска с v3 и Python?

  • Обслуживание счета с [email protected]
  • Другой электронной почты является администратор электронной
  • Владелец файла электронной почты администратора. Я не могу изменить домен владельца -differents между gserviceaccount и моим доменом.
  • Извините, мой плохой английский.

ответ

0

В v3 вы должны позвонить files.update с помощью {'trashed':true}.

Если вы хотите найти функцию v3, которая, как вы знаете, существует, отметьте Migrate to Google Drive API v3.

+0

Я пробовал: определение функции borrarDeDrive (обслуживание, пункт): \t попробовать: \t \t file_metadata =. { \t \t \t 'разгромил': Правда \t \t} \t \t service.files() обновление (FILEID = пункт [ 'ID'], \t \t \t \t \t \t \t \t тела = file_metadata) .Execute(); \t кроме ошибок.HttpError, ошибка: \t \t print («Нет ошибки в исходном коде:% s»% ошибка) ' и я получил (это я опубликовал в начале сообщения). – HawksGaze

+0

Попытайтесь зайти на панель администратора домена google и в настройках безопасности -> Дополнительные настройки -> Управление доступом к клиенту API Добавьте идентификатор клиента и область действия – Kariamoss

+0

Я добавил идентификатор клиента и область действия «https: // www. googleapis.com/auth/drive.file. Я запускаю приложение, и у меня есть одна и та же ошибка («У пользователя нет достаточных разрешений для этого файла») – HawksGaze

0

Там в Files: delete для Google Drive Rest API V3, используя формат запроса HTTP:

DELETE https://www.googleapis.com/drive/v3/files/fileId 

Однако, пожалуйста, не то, что это возможно только, если вы используете электронную почту владельца, который является администратором электронной почты.

Permanently deletes a file owned by the user without moving it to the trash. If the target is a folder, all descendants owned by the user are also deleted.

И поскольку мы не можем передать право собственности на файл из-за различные проблемы доменов, любезно попробовать данное решение в этом так посте - How to delete a google docs without ownership using an API/Services account. Надеюсь это работает.

+0

по ссылке, Python имеет SignedJwtAssertionCredentials. Google изменить это с помощью http://oauth2client.readthedocs.io/en/latest/source/oauth2client.service_account.html: определение функции get_credenciales_with_impersonate(): \t F = файл (p12_file, 'гь') \t ключ = п. чтения() \t f.close() \t credenciales = ServiceAccountCredentials.from_p12_keyfile ( \t client_email, p12_file, прицелы = SCOPES) \t возврата credenciales.create_delegated (admin_email) '' и \t serviceV3Impersonate = discovery.build ('диск' , 'v3', http = get_credenciales_with_impersonate()) ' не работает (объект ServiceAccountCrededntials не имеет запроса атрибута) – HawksGaze

Смежные вопросы