如何使用Google Drive .NET API v3的服务帐户访问Team Drive

时间:2017-04-06 00:47:25

标签: c# google-api google-drive-api service-accounts gsuite

是否有人知道应该采取哪些配置来授予Google服务帐户访问已创建的团队驱动器的权限?

我们的想法是在.NET后端应用程序中使用服务帐户,以便从Team Drive上载/下载文件,该文件由公司员工共享。例如,公司拥有其company.com域名,并在Google上提供name.surname@company.com个用户帐户。还有一个Team Drive为员工。其中一个帐户(不是管理员)用于创建服务帐户,到目前为止这些步骤已完成:

  • 在Google Cloud Platform中为组织创建项目
  • 启用了Google云端硬盘API
  • 创建了一个服务帐户
  • 为该服务帐户创建了一个密钥
  • 在IAM标签中指定的编辑/所有者角色
  • 使用G Suite管理员帐户here使用客户端ID为服务帐户启用G Suite全域代表团。

我在文档中找不到任何关于如何授予服务帐户访问团队驱动器的权限,以便所有有权访问团队驱动器的用户都可以看到所有上传的文件/文件夹。关于如何做到这一点的任何有用链接都非常受欢迎。

目前,当我使用服务帐户创建文件夹或上传文件时,它会将它们放在仅属于服务帐户的专用云端硬盘中。

可能有一种可行的解决方法:将文件上传到服务帐户的私人驱动器并与用户共享(这不是需求的首选),但是,如果有人告诉我们如何做到这一点,我会快乐。

1 个答案:

答案 0 :(得分:4)

除了问题中的步骤之外,以下是基于comment的文档授予访问权限的步骤。

这些步骤需要具有服务和应用管理员角色的帐户。

  • 登录Google管理员并转到应用 - > G套房 - >驱动器和文档 - >共享设置子菜单,然后从共享选项
  • 中选择开启
  • 点击管理团队驱动器子菜单,然后点击要授予其访问权限的团队驱动器
  • 点击会员访问弹出窗口中的添加会员
  • 输入服务帐户帐户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

的更多信息