使用服务帐户的Google Drive API问题

时间:2016-03-21 21:11:36

标签: python google-drive-api

我有一个服务器程序试图从Google云端硬盘读取特定文件。使用服务帐户设置身份验证,并且可以成功执行管理SDK操作。但是,我尝试以下列方式使用Drive 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()

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

为控制台中的服务帐户启用了Drive API,并且已授予服务帐户域范围的委派权限。

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

AccessTokenRefreshError: access_denied

有什么想法吗?

编辑:

如果我使用服务帐户电子邮件地址共享相关文件,则可以使用。但是,我认为域范围的授权将提供域范围的权限。这是预期的行为(即服务帐户只能访问公共/域范围内的驱动对象,或者是否已与服务帐户电子邮件明确共享)?

0 个答案:

没有答案