C# 从 Google 共享驱动器 API v.3 中删除文件

Posted

技术标签:

【中文标题】C# 从 Google 共享驱动器 API v.3 中删除文件【英文标题】:C# Delete File from Google Shared Drive API v.3 【发布时间】:2021-08-04 21:40:52 【问题描述】:

我能够使用服务帐户成功地将文件上传到 Google 云端硬盘共享云端硬盘(不是 “我的云端硬盘” 文件夹,这是不同的)。但是当我尝试删除文件时,我得到了一个The user does not have sufficient permissions for this file. [403]

请注意,在我的代码中,我设置了 request.SupportsAllDrives = true; 标志以允许它访问共享驱动器。

我检查了服务帐户的权限 ID 和文件的权限 ID,不出所料,它们是相同的,因为服务帐户是首先将文件放在那里的人。

对出了什么问题有任何想法吗?

/// <summary>  
/// Permanently delete a file, skipping the trash.  
/// </summary>  
/// <param name="service">Drive API service instance.</param>  
/// <param name="fileId">ID of the file to delete.</param> 
public async Task<string> DeleteDriveFile(DriveService service, string fileId)

    // get the user's permission id from Drive
    var getRequest = service.About.Get();
    getRequest.Fields = "*";
    var getResponse = await getRequest.ExecuteAsync().ConfigureAwait(true);

    string userPermissionId = getResponse.User.PermissionId;
    Debug.Print($"UserPermissionID: userPermissionId");

    var responseFile = service.Permissions.Get(fileId, userPermissionId);
    Debug.Print($"FilePermissionID: responseFile.PermissionId");

    string response = "";
    try
    
        var request = service.Files.Delete(fileId);
        request.SupportsAllDrives = true;
        response = await request.ExecuteAsync().ConfigureAwait(false);
    
    catch (Exception e)
    
        Debug.WriteLine("Delete File Error: " + e.Message);
    

    return response;

写入输出控制台的内容:

UserPermissionID: 0243088xxxxxx3009857
FilePermissionID: 0243088xxxxxx3009857
The thread 0x1398 has exited with code 0 (0x0).
Exception thrown: 'Google.GoogleApiException' in System.Private.CoreLib.dll
Delete File Error: Google.Apis.Requests.RequestError
The user does not have sufficient permissions for this file. [403]
Errors [
    Message[The user does not have sufficient permissions for this file.] Location[ - ] Reason[insufficientFilePermissions] Domain[global]
]

【问题讨论】:

你解决了吗? 【参考方案1】:

当前经过身份验证的用户必须拥有该文件,或者是共享云端硬盘文件的父级组织者。

因此,总而言之,如果文件不是您创建的(即通过 API 验证的用户),您将无法删除该文件

【讨论】:

以上是关于C# 从 Google 共享驱动器 API v.3 中删除文件的主要内容,如果未能解决你的问题,请参考以下文章

使用 c# 在共享驱动器中复制 google doc 文件

无法从 Google Drive API 检索 thumbnailLink

使用 Java 和 Google Drive API V3 将文件上传到共享的 Google Drive 位置?

如何在使用Google Drive API V3与他人共享时设置文件的功能?

自动从 Google 共享驱动器中删除超过 X 天的文件?

如何将某人踢出Google驱动器文件