我正在使用服务器进行服务器授权,如下所述: Oauth 2 Service Account
我有用户U1和U2,两者都在同一个域中。 当我使用API V2(试过V3和相同的效果)我无法删除U2s文件,我得到403.我们有相同的共享目录。 但是,当我通过网页登录时,这确实有效。 其他请求,如文件列表或下载工作。
我使用
获取令牌 credentials = SignedJwtAssertionCredentials(client_email, bytes(private_key, 'UTF-8'), 'https://www.googleapis.com/auth/drive', sub=U1@MyDomain.com)
有人知道为什么它可以在网页上运行而不是API吗? 提前谢谢
修改 我得到的错误是:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "forbidden",
"message": "Insufficient permissions for this file",
"locationType": "other",
"location": "file.permissions"
}
],
"code": 403,
"message": "Insufficient permissions for this file"
}
}
如果第一个用户是所有者(U1),则第二个用户(U2)具有编辑权限,第三个用户是一般组(U1,U2被分配并拥有两个编辑权限),最后一个是只是一个可以阅读的用户。
答案 0 :(得分:0)
您正在作为服务帐户进行身份验证。将服务帐户视为虚拟用户。它有自己的谷歌驱动器帐户,谷歌日历帐户,可能还有更多。谷歌驱动器控制私人用户数据,U1拥有他的文件U2拥有他的文件。除非U1与U2共享文件,否则U1无法访问U2的文件。服务帐户也是如此。
"message": "Insufficient permissions for this file",
就是这个意思。服务帐户无权访问您尝试访问的文件。提供访问权限的最简单方法是获取服务帐户电子邮件地址,并通过Drive Web界面与服务帐户共享文件,就像使用任何其他用户一样。
注意:域名让我觉得您拥有其中一个Google域帐户,Google应用或工作或类似内容。我无法访问其中一个,因此我无法对此进行测试。但是,我读到您可以将该服务帐户添加为域中的用户,并授予其对所有用户文件的访问权限。 (疯狂的猜测我会看到我是否记得我读过它。)