在管理员可能不属于的驱动器中查找给定的文件 ID

Find given file ID in a Drive that the admin may not be a part of

我正在针对 Google 驱动器 API 工作,并希望允许我的用户通过 ID 从其 GSuite 组织内的任何共享驱动器获取给定文件的名称。

我正在使用服务帐户进行身份验证,并已在组织的管理控制台内向我的服务帐户用户授予适当的 permissions/scopes:

https://www.googleapis.com/auth/admin.directory.user.readonly https://www.googleapis.com/auth/admin.directory.group.readonly https://www.googleapis.com/auth/admin.directory.group.member.readonly https://www.googleapis.com/auth/admin.directory.domain.readonly https://www.googleapis.com/auth/drive

因为该帐户的管理员用户无法访问每个驱动器中的每个文件,如果管理员用户没有访问权限,则尝试通过文件 ID 查找单个文件的请求将失败。似乎查询此特定文件的唯一方法是找到有权访问每个共享驱动器的用户,然后查询该共享驱动器的文件 ID 以查看它是否存在。

例如,如果我使用管理员用户设置 useDomainAdminAccess = true 查询 Drives:list,我将能够看到组织内的所有驱动器(包括我作为管理员无权访问的驱动器) ).

如果我尝试使用 Files:list 和以下代码列出这些驱动器中的文件。

corpora=drive&driveId={xxxxx}&includeItemsFromAllDrives=true&includeTeamDriveItems=true

我将收到 403 和一条错误消息:

{ "message": "The attempted action requires shared drive membership." }

根据文档,查询文件时似乎没有类似于 useDomainAdminAccess 的内容。

如果管理员用户无法访问这些驱动器上的文件,那么检索这些文件以找到可以访问驱动器同时冒充他们的用户的唯一方法是什么?

共享驱动器归 OU 本身所有,不归任何用户所有。不过,可以为他们分配管理员,其中可能包括也可能不包括域管理员。另请记住,OU 的共享驱动器设置由超级管理员管理,超级管理员可以为 OU 中共享驱动器的管理员设置预防规则。考虑到上述情况,你的问题“如果管理员用户无法访问这些驱动器上的文件,是检索它们以找到可以访问驱动器的用户的唯一方法,同时冒充他们”我会说这是真的,如果你不想让管理员成为驱动器的管理员。

有关共享驱动器访问级别的信息,请参阅 https://support.google.com/a/answer/7337554?hl=en