c#-如何通过Google Drive .NET API v3使用服务帐户访问Team Drive
作者:互联网
有谁知道应该进行哪些配置才能向Google服务帐户授予对已创建的Team Drive的访问权限?
这个想法是在.NET后端应用程序中使用服务帐户向公司员工之间共享的Team Drive上载文件/从中下载文件.例如,公司拥有其company.com域,并在Google提供name.surname@company.com用户帐户.此外,还有一个面向员工的团队精神.这些帐户之一(不是admin)用于创建服务帐户,到目前为止,这些步骤已完成:
>在Google Cloud Platform中为组织创建了一个项目
>已启用的Google Drive API
>创建服务帐户
>为该服务帐户创建了密钥
>在IAM标签中分配的编辑者/所有者角色
>已使用客户端ID为服务帐户启用G Suite域范围委派,如使用G Suite管理员帐户here所述.
我在文档中找不到有关如何授予服务帐户对Team Drive的访问权限的任何提及,以便所有上载到Team Drive的用户都可以看到所有上载的文件/文件夹.任何有关如何执行此操作的有用链接都非常感谢.
目前,当我使用服务帐户创建文件夹或上载文件时,会将它们放入仅属于该服务帐户的专用云端硬盘中.
可能有一种解决方法:将文件上传到服务帐户的专用驱动器并与用户共享(这不是要求的选择),但是,如果有人告诉您如何做到这一点,我会很高兴的.
解决方法:
除了问题中的步骤之外,还有以下步骤基于comment的文档授予访问权限.
这些步骤需要具有“服务和应用程序”管理员角色的帐户.
>登录到Google Admin并转到Apps-> G Suite->云端硬盘和文档->共享设置子菜单,然后从共享选项中选择开启
>单击“管理团队驱动器”子菜单,然后单击要授予访问权限的团队驱动器
>在“成员访问权限”弹出窗口中单击“添加成员”
>输入服务帐户的帐户ID(电子邮件),选择访问级别(我选择了完全),检查跳过发送通知,然后单击发送
假设身份验证部分设置正确,下面是一个简单的代码,该代码可获取服务帐户的团队驱动器:
var teamDriveList = service.Teamdrives.List();
teamDriveList.Fields = "teamDrives(kind, id, name)";
var teamDrives = teamDriveList.Execute().TeamDrives;
if (teamDrives != null && teamDrives.Count > 0)
{
foreach (var drive in teamDrives)
{
Console.WriteLine("{0} ({1})", drive.Name, drive.Id);
}
}
有关Fields参数语法here的更多信息
标签:service-accounts,google-api,gsuite,google-drive-api,c 来源: https://codeday.me/bug/20191026/1933856.html