使用服务帐户的Google Drive API问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用服务帐户的Google Drive API问题相关的知识,希望对你有一定的参考价值。
我有一个服务器程序正在尝试从Google云端硬盘读取特定文件。 身份验证是使用服务帐户设置的,可以成功执行admin 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
有任何想法吗?
编辑:
如果我与服务帐户的电子邮件地址共享有问题的文件,则可以使用。 但是,我本以为域范围的委派将提供域范围的特权。 这是否是预期的行为(即服务帐户只能访问在公共/域范围内或已与服务帐户电子邮件明确共享的驱动器对象)?
以上是关于使用服务帐户的Google Drive API问题的主要内容,如果未能解决你的问题,请参考以下文章
Google Drive API Python 服务帐户示例
如何通过 Google Drive .NET API v3 使用服务帐户访问 Team Drive