【发布时间】:2022-01-13 19:09:31
【问题描述】:
编辑:
我已尝试授予 SA 访问我的个人驱动器(在组织工作区内)的权限,以进行一些故障排除。在授予 SA 对特定文件夹的权限并重写代码以检查该文件夹后,它成功返回了有关测试文件夹中文件的信息。结论是 SA 已由我们的 IT 部门正确设置,并且确实具有足够的范围和权限来读取我们组织工作区中的文件。所以,问题仍然存在:为什么它不能返回有关共享驱动器中文件的信息?需要设置哪些其他参数才能使其返回这些文件?是否还有其他完全需要使用的功能?我确实注意到了已弃用的 TeamDrives.List() 函数,但尝试使用它时的指导是使用我最初编写的 Files.List()。
--- 结束编辑 ---
我们有一个 Google Workspace 环境。我的 IT 部门已授予我一个服务帐户 (SA),我正在尝试使用它来帮助维护访问权限。 SA 已被授予对共享驱动器实例的 Content Manager 权限。 我已经尝试关注this YouTube 教程。在逐步执行代码时,它似乎正确登录,但没有返回任何文件。我尝试用完整的 URL 替换我要检查的根文件夹的文件 ID,但随后它返回 404 错误,所以我认为它正在找到正确的文件夹。 如果使用文件 ID,代码运行没有错误,它只是不返回任何文件(根目录中有数百个文件夹和文件)。 有什么建议吗?
namespace DriveQuickstart
{ 类程序
{
static string[] Scopes = { DriveService.Scope.DriveReadonly };
private const string PathToServiceAccountKeyFile = @"<path to jason Service Account file>";
private const string ServiceAccountEmail = @"<Service Account "email">";
static void Main(string[] args)
{
MainAsync().Wait();
}
static async Task MainAsync()
{
var credential = GoogleCredential.FromFile(PathToServiceAccountKeyFile)
.CreateScoped(new[] { DriveService.ScopeConstants.Drive });
var service = new DriveService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential
});
var request = service.Files.List();
request.IncludeItemsFromAllDrives = true;
request.SupportsAllDrives = true;
request.Q = "parents in '<id of "root" folder in shared drive>'";
FileList results = await request.ExecuteAsync();
foreach (var driveFile in results.Files)
{
Console.WriteLine($"{driveFile.Name} {driveFile.MimeType} {driveFile.Id}");
}
}
}
}
【问题讨论】:
-
有什么想法吗,@DAIMTO ?
标签: c# google-drive-api google-drive-shared-drive