使用服务帐户的googledriveapi问题

2024-04-23 08:54:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个服务器程序,试图从googledrive读取一个特定的文件。身份验证是使用服务帐户设置的,可以成功执行admin SDK操作。但是,当我尝试按以下方式使用驱动器API时,我得到一个404错误:

credentials = SignedJwtAssertionCredentials(settings.GOOGLE_SERVICE_ACCOUNT_EMAIL, key, scope='https://www.googleapis.com/auth/drive')
http = credentials.authorize(httplib2.Http())
drive = build('drive', 'v2', http=http)
file_data = drive.files().get_media(fileId="MYFILEID").execute()

如果我将文件权限设置为“任何具有链接的人都可以查看”,那么代码将按预期工作。在

已在控制台中为服务帐户启用驱动器API,并且服务帐户已被授予全域委派。在

如果我将sub='email@mydomain.com'添加到SignedJwtAssertionCredentials调用中,那么当我尝试构建驱动器服务时,我会得到一个

^{pr2}$

有什么想法吗?在

编辑:

如果我与服务帐户电子邮件地址共享有问题的文件,它就可以工作。然而,我本以为域范围内的委派将提供域范围内的特权。这是否是预期的行为(即服务帐户只能访问公共/域范围内的驱动器对象或已与服务帐户电子邮件明确共享的驱动器对象)?在


Tags: 文件对象com身份验证apihttp电子邮件帐户