【问题标题】:Google DriveService Files.List() not returning resultsGoogle DriveService Files.List() 不返回结果
【发布时间】: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


【解决方案1】:

好的,@DAIMTO 示例似乎特定于个人驱动器。示例中的团队驱动器的 Q() 参数语法不正确。使其在团队环境中工作:

  • IncludeItemsFromAllDrives 参数必须设置为 true

  • SupportsAllDrives 参数必须设置为 true

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

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

注意:这与 youtube 的“'folder_ID' 中的父母”示例相反)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-21
    • 2022-10-07
    • 1970-01-01
    • 2015-09-14
    • 2018-12-17
    相关资源
    最近更新 更多