C#调用Google Drive API获取带resourcekey的文件/文件夹方法
关于C#调用Google Drive API访问带resourceKey资源的解决方案
你此前的代码失效是因为Google Drive API v3对共享类资源新增了resourceKey强制校验逻辑,你已经获取到对应资源的resourceKey后,只需在原有请求基础上新增resourceKey赋值即可正常操作:
- 访问/获取带resourceKey的文件/文件夹
直接给Files.Get请求实例的ResourceKey属性赋值你已拿到的对应资源的resourceKey,调整后的代码如下:
// 替换为你实际的文件ID、对应resourceKey string fileId = "目标文件/文件夹ID"; string resourceKey = "已获取到的对应resourceKey"; var getRequest = DriveService.Files.Get(fileId); // 新增resourceKey赋值行 getRequest.ResourceKey = resourceKey; var targetFile = getRequest.Execute();
- 复制带resourceKey的文件/文件夹
复制操作同理,给Files.Copy请求实例的ResourceKey属性赋值源资源的resourceKey即可,示例代码如下:
// 替换为实际的源文件ID、对应resourceKey、目标配置 string sourceFileId = "待复制的源文件/文件夹ID"; string sourceResourceKey = "源资源对应的resourceKey"; // 配置复制后的目标文件元数据,可按需修改名称、指定父文件夹等 var targetFileMeta = new Google.Apis.Drive.v3.Data.File { Name = "复制后的文件名称", Parents = new List<string> { "目标父文件夹ID" } }; var copyRequest = DriveService.Files.Copy(targetFileMeta, sourceFileId); // 赋值源资源的resourceKey copyRequest.ResourceKey = sourceResourceKey; var copiedResult = copyRequest.Execute();
如果你需要批量操作多个带resourceKey的资源,也可以统一在请求头中添加X-Goog-Drive-Resource-Keys参数,参数值格式为资源ID1/resourceKey1,资源ID2/resourceKey2,单资源操作直接给请求对象的ResourceKey属性赋值即可,逻辑更清晰不易出错。
内容的提问来源于stack exchange,提问作者StackUser
相关产品推荐
相关产品推荐

