使用Python [服务帐户]

时间:2016-05-23 15:50:13

标签: python python-2.7 api google-drive-api google-api-v3

我正在使用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从驱动器中删除文件?

  • XXXXX@appspot.gserviceaccount.com
  • 的服务帐户
  • 另一封电子邮件是管理员电子邮件
  • 该文件的所有者是管理员电子邮件。我无法更改gserviceaccount和我的域名之间的所有者 - 不同域名 -
  • 对不起,我的英文不好。

3 个答案:

答案 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