Google Drive API v3 (C# .NET) 按标题搜索文件夹/文件时抛出 RequestError Invalid Value [400]

alk*_*dev 3 c# google-api file-search google-drive-api google-api-dotnet-client

我正在尝试将文件上传到 Google Drive 到特定文件夹。由于我需要文件夹的 ID(不仅仅是名称)来设置上传目标(文件的父级),我尝试按名称搜索它并从下面的查询中获取第一个返回文件的 ID。我得到一个错误而不是结果:

Google.Apis.Requests.RequestError Invalid Value [400]
Errors [ Message[Invalid Value] Location[q - parameter] Reason[invalid] Domain[global]
at Google.Apis.Requests.ClientServiceRequest`1.Execute()
...
Run Code Online (Sandbox Code Playgroud)

如果我尝试真正搜索任何内容,我会收到此错误或空响应(即对所有目录的查询mimeType='application/vnd.google-apps.folder'返回一个空列表(尽管不会引发错误))。

我的代码的相关片段:

FilesResource.ListRequest request = service.Files.List();
request.Q = "title='test_folder'";
string folderId = request.Execute().Files[0].Id;    // Error occurs here upon execution
...
fileMeta.Parents = new List<string> { folderId };
Run Code Online (Sandbox Code Playgroud)

有趣的是,这个确切的查询适用于 API v2 上的 Google API 测试站点,但不适用于 API v3。获取所有文件夹的查询虽然适用于两者(Google 测试站点上的 v2 和 v3),但我通过我的 .NET 应用程序得到了一个空响应。

PS:文件上传到“我的驱动器”目录工作,驱动服务操作,如设置文件权限工作等。

接受有关检查内容/我搞砸的地方的想法和建议。

DaI*_*mTo 5

您遇到的问题是您使用的File.Name不是Google Drive v3 API File.TitleTitle在 v2 中使用。

request.Q = "mimeType = 'application/vnd.google-apps.folder' and name = 'test_folder'";
Run Code Online (Sandbox Code Playgroud)

它是一个已知的错误,一年多前我已经将文档中的错误报告给 Google,仍在等待他们解决问题。