编程语言
首页 > 编程语言> > c#-如何通过Google Drive .NET API v3使用服务帐户访问Team Drive

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