我正在使用Google云端硬盘,我的代码使用v3通过服务帐户处理文件。 我可以阅读,下载文件,但我无法删除。 我尝试使用v2删除(我没有找到v3删除)并且没有工作(不是权限)。我试过用V2模仿管理员账号并没有用。
最近,我尝试使用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从驱动器中删除文件?
答案 0 :(得分:0)
在第3版中,您必须使用files.update
致电{'trashed':true}
。
如果要查找已知的v3功能,请选中Migrate to Google Drive API v3。
答案 1 :(得分:0)
使用HTTP请求格式的Google Drive Rest API V3 Files: delete:
DELETE https://www.googleapis.com/drive/v3/files/fileId
但是,请注意,只有在您使用所有者的电子邮件(即管理员电子邮件)时才可以这样做。
永久删除用户拥有的文件,而不将其移至回收站。如果目标是文件夹,则用户拥有的所有后代也将被删除。
由于不同的域名问题我们无法转移文件所有权,请在此SO帖子中尝试给定的解决方案 - How to delete a google docs without ownership using an API/Services account。我希望它有效。
答案 2 :(得分:0)
使用Python Drive API的示例。
下面假设服务帐户可以使用file_id
from apiclient import discovery
from google.oauth2 import service_account
import googleapiclient.discovery
SCOPES = ['https://www.googleapis.com/auth/drive']
SERVICE_ACCOUNT_FILE = 'service-account.json'
credentials = service_account.Credentials.from_service_account_file(SERVICE_ACCOUNT_FILE, scopes=SCOPES)
service = discovery.build('drive', 'v3', credentials=credentials)
# delete file using file id
file_id='<your file id here>'
service.files().delete(fileId=file_id).execute()
参考:
https://developers.google.com/drive/api/v3/quickstart/python