每个 Google 云端硬盘文件、文件夹和共享云端硬盘都有关联的权限资源。每个资源都会标识特定 type
(用户、群组、网域、任何人)和 role
(如“commenter”或“Reader”)的权限。例如,文件可能具有向特定用户 (type=user
) 授予只读权限 (role=reader
) 的权限,而另一个权限则向特定组 (type=group
) 的成员授予文件评论权限 (role=commenter
)。
如需查看角色的完整列表以及每个角色允许的操作,请参阅角色。
共享云端硬盘资源的场景
共有 5 种不同类型的分享情景:
如需共享“我的云端硬盘”中的文件,用户必须拥有
role=writer
或更高版本。如果文件的
writersCanShare
布尔值设置为False
,则用户必须有role=owner
。如果
role=writer
的用户受临时访问权限约束,则他们将无法共享文件。
如需了解详情,请参阅添加到期日期。
如需共享“我的云端硬盘”中的文件夹,用户必须拥有
role=writer
或更高版本。如果文件的
writersCanShare
布尔值设置为False
,则用户必须具有更宽松的role=owner
。不允许针对包含“
role=writer
”的“我的云端硬盘”文件夹进行临时访问(受失效日期和时间限制)。
如需共享共享云端硬盘中的文件,用户必须拥有
role=writer
或更高版本。writersCanShare
设置不适用于共享云端硬盘中的内容。系统会将其视为始终设置为True
。
如要共享云端硬盘中的某个文件夹,用户必须具备
role=organizer
。- 如果共享云端硬盘的
sharingFoldersRequiresOrganizerPermission
限制设为False
,则使用role=fileOrganizer
的用户可以共享该共享云端硬盘中的文件夹。
- 如果共享云端硬盘的
要管理共享云端硬盘成员资格,用户必须拥有
role=organizer
。只有用户和群组才能成为共享云端硬盘的成员。
权限传播
文件夹的权限列表会向下传播,所有子级文件和文件夹都会继承父级的权限。每当权限或层次结构发生变化时,传播会以递归方式通过所有嵌套文件夹进行。例如,如果某个文件存在于文件夹中,然后该文件夹移动到另一个文件夹中,则新文件夹的权限会传播到该文件中。如果新文件夹向文件用户授予新角色(例如“写入者”),它会替换旧角色。
相反,如果某个文件从文件夹继承 role=writer
,而移至另一个提供“读取器”角色的文件夹中,则该文件现在会继承 role=reader
。
无法将继承的权限从共享云端硬盘的文件或文件夹中移除。 相反,必须在继承它们的直接或间接父级上调整这些权限。继承的权限可以从“我的云端硬盘”或“与我共享”下的项中移除。
反之,继承“我的云端硬盘”中的文件或文件夹的权限。因此,如果文件从“我的云端硬盘”文件夹继承 role=writer
,您可以对该文件设置 role=reader
以降低其权限级别。
功能
权限资源最终不会确定当前用户对文件或文件夹执行操作的能力。而是 Files 资源包含一系列布尔值 capabilities
字段,用于指示是否可以对文件或文件夹执行操作。Google Drive API 根据当前与文件或文件夹相关联的用户权限资源来设置这些字段。
例如,当 Alex 登录您的应用并尝试共享文件时,系统会根据该文件的权限检查 Alex 的角色。如果该角色允许他们共享某个文件,则与该角色相关的 capabilities
(例如 canShare
)将被填充。如果 Alex 想要分享该文件,您的应用会检查 capabilities
,以确保 canShare
已设置为 true
。
创建权限
创建权限时,需要填写以下 2 个字段:
type
-type
用于标识权限的范围(user
、group
、domain
或anyone
)。具有type=user
的权限适用于特定用户,而具有type=domain
的权限适用于特定网域中的所有人。role
-role
字段用于标识type
可以执行的操作。例如,具有type=user
和role=reader
权限会向特定用户授予对文件或文件夹的只读权限。或者,借助type=domain
和role=commenter
权限,网域中的所有人都可以向文件添加评论。如需查看角色的完整列表以及每个角色允许的操作,请参阅角色。
在创建 type=user
或 type=group
权限时,您还必须提供一个 emailAddress
,以将特定用户或群组与权限相关联。
当您在 type=domain
中创建权限时,还必须提供 domain
以将特定网域与权限绑定起来。
如需创建权限,请执行以下操作:
- 对关联的文件或文件夹使用
permissions.create
方法和fileId
。 - 在请求正文中,确定
type
和role
。 - 如果为
type=user
或type=group
,则提供emailAddress
。如果为type=domain
,则提供domain
。
使用目标对象群组
目标对象群组是您可以推荐给用户,供其与之共享内容的用户群组(例如部门或团队)。您可以鼓励用户与更具体或更有限的目标对象共享内容,而不是与整个组织共享。目标对象群组可以帮助您提高数据的安全性和隐私性,并可让用户更轻松地进行适当共享。如需了解详情,请参阅目标对象群组简介。
要使用目标对象群组,请按以下步骤操作:
登录 Google 管理控制台。
您必须使用拥有超级用户权限的帐号登录。
依次前往菜单 > 目录 > 目标对象群组。
在目标对象群组列表中,点击目标对象群组的名称。如需创建目标对象群组,请参阅创建目标对象群组。
复制目标对象网址中的唯一 ID:
https://admin.google.com/ac/targetaudiences/ID
。使用
type=domain
创建权限,并将domain
字段设置为ID.audience.googledomains.com
。
如需查看用户与目标对象群组互动的方式,请参阅链接共享的用户体验。
检索文件、文件夹或共享云端硬盘的所有权限
使用 permissions.list
方法检索文件、文件夹或共享云端硬盘的所有权限。
验证用户权限
当您的应用打开文件时,应检查该文件的功能并呈现界面,以反映当前用户的权限。例如,如果用户对文件没有 canComment
功能,则应在界面中停用评论功能。
如需检查功能,请调用 files.get
,并将 fileId
和 fields
参数设为 capabilities
字段。
如需详细了解如何使用 fields
参数返回字段,请参阅返回文件的特定字段。
确定共享云端硬盘文件和文件夹的角色来源
如需更改文件或文件夹的角色,您必须知道角色的来源。 对于共享云端硬盘,角色的来源可以基于共享云端硬盘的成员身份、文件夹上的角色或文件上的角色。
如需确定共享云端硬盘或该云端硬盘中内容的角色来源,请调用 permissions.get
,并将 fileId
、permissionId
和 fields
参数设为 permissionDetails
字段。要查找 permissionId
,请结合使用 permissions.list
和 fileId
。
此字段将枚举用户、群组或网域的所有继承和直接文件权限。
更改权限
如需更改对文件或文件夹的权限,您可以更改已分配的角色:
调用
permissions.update
具有更改权限的permissionId
权限,并为关联的文件、文件夹或共享云端硬盘调用fileId
。要查找permissionId
,请结合使用permissions.list
和fileId
。在请求中,确定新的
role
。
即使用户或群组已经是成员,您也可以授予对共享云端硬盘中个别文件或文件夹的权限。例如,Alex 是共享云端硬盘成员的role=commenter
成员。但是,您的应用可以为共享云端硬盘中的文件授予 Alex role=writer
。在这种情况下,由于新角色比其成员授予的角色更宽松,因此新权限将成为文件或文件夹的有效角色。
撤消对文件或文件夹的访问权限
如需撤消对文件或文件夹的访问权限,请使用 fileId
和 permissionId
调用 delete
来删除权限。
对于“我的云端硬盘”中的内容,您可以删除继承的权限。删除继承的权限将撤消对该项和子项的访问权限(如有)。
对于共享云端硬盘中的内容,无法撤消继承的权限。请改为更新或撤消对父级文件或文件夹的权限。
delete
操作还用于删除直接应用于共享云端硬盘文件或文件夹的权限。
将文件所有权转移给同一组织中的另一个 Google Workspace 帐号
“我的云端硬盘”中现有文件的所有权可以从一个 Google Workspace 帐号转移到同一组织中的另一个帐号。拥有共享云端硬盘的组织拥有其中的文件。因此,共享云端硬盘中的文件和文件夹不支持所有权转移。共享云端硬盘的组织者可以将内容从该共享云端硬盘移至自己的“我的云端硬盘”,从而将所有权转移给他们。
要转移“我的云端硬盘”中文件的所有权,请执行以下操作之一:
创建文件权限,向特定用户 (
type=user
) 授予所有者访问权限 (role=owner
)。使用
role=owner
更新现有文件的权限,并将所有权转移给指定用户 (transferOwnership=true
)。
将文件所有权从一个消费者帐号转移到另一个消费者帐号
文件所有权可以在一个消费者帐号之间转移。但是,除非潜在的新所有者明确同意转移,否则云端硬盘不会在 2 个消费者帐号之间转移文件所有权。如需将文件所有权从一个消费者帐号转移到另一个消费者帐号,请执行以下操作:
当前所有者通过创建或更新潜在的新所有者的文件权限来发起所有权转移。权限必须包含以下设置:
role=writer
、type=user
和pendingOwner=true
。如果新所有者为潜在所有者创建权限,则系统会向潜在新所有者发送电子邮件通知,告知他们承担文件的所有权。新所有者通过创建或更新文件权限来接受所有权转移请求。权限必须包含以下设置:
role=owner
和transferOwnership=true
。如果新所有者要创建新权限,则系统会向之前的所有者发送电子邮件通知,告知其所有权已转移。
文件转移完毕后,系统会将前任所有者的角色降级为 writer
。
使用批量请求更改多项权限
我们强烈建议您使用批量请求来修改多项权限。
以下示例演示了如何使用客户端库执行批量权限修改。