Google DriveService Files.List() 未返回结果

Google DriveService Files.List() not returning results

编辑:

我已尝试授予 SA 访问我的个人驱动器(在组织工作区内)以进行一些故障排除。在向 SA 授予对特定文件夹的权限并重写代码以检查该文件夹后,它成功地 return 编辑了有关测试文件夹中文件的信息。结论是 SA 已由我们的 IT 部门正确设置,并且确实有足够的范围和权限来读取我们组织工作区中的文件。因此,问题仍然存在:为什么它不能 return 有关共享驱动器中文件的信息?还需要设置哪些其他参数才能将其传送到 return 那些文件?是否还有其他需要使用的功能?我确实注意到已弃用的 TeamDrives.List() 函数,但尝试使用它时的指导是使用 Files.List() 正如我最初写的那样。

---结束编辑---

我们有一个 Google 工作区环境。我们的 IT 部门已授予我一个服务帐户 (SA),我正在尝试使用它来帮助维护访问权限。 SA 已被授予对共享驱动器实例的内容管理员权限。 我尝试按照 this YouTube 教程进行操作。在逐步执行代码时,它似乎可以正确登录,但没有 returning 任何文件。我已经尝试用完整的 URL 替换我要检查的根文件夹的文件 ID,但是 return 是一个 404 错误,所以我认为它找到了正确的文件夹。 如果使用文件 ID,则代码运行时不会出现错误,只是 return 没有文件(并且根目录中有数百个文件夹和文件)。 有什么建议吗?

namespace DriveQuickstart

{ class 计划

{

    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 示例似乎是针对个人驱动器的。示例中的团队驱动器的 Q() 参数语法不正确。使其在团队环境中工作:

  • IncludeItemsFromAllDrives 参数必须设置为 true

  • SupportsAllDrives 参数必须设置为 true

  • 查找特定目录的Q搜索参数语法为:

    Q = "'folder_ID' 在 parents 和 mimeType = 'application/vnd.google-apps.folder'"; -- 或您选择的 mimeType

(注意: 这与 youtube 示例“parents in 'folder_ID'”相反)