【问题标题】:How to programmatically remove a file from "share with me" in Google drive如何以编程方式从 Google 云端硬盘中的“与我共享”中删除文件
【发布时间】:2019-06-26 10:40:21
【问题描述】:

在整个驱动器范围内执行以下命令

var request = service.Files.Delete(fileId);

结果

权限不足错误。

当试图从谷歌驱动器“与我共享”文件夹中删除文件时。

当登录的用户实际上无权删除他们不拥有的文件时,如何从“与我共享”中删除文件?

【问题讨论】:

    标签: c# google-api google-drive-api google-oauth google-api-dotnet-client


    【解决方案1】:

    问题是相关用户不拥有该文件。经过大量挖掘后,我意识到您要做的是删除用户对相关文件的权限。

    您需要做的第一件事是在当前用户上运行about.get

    return service.About.Get().Execute();
    

    这将为您提供该用户的权限 ID

    “permissionId”:“060305882255734372”,

    完成后,您可以在文件上为该用户执行permissions.get

    var response = service.Permissions.Get(fileId, permissionId).Execute();
    

    回应

    {
     "kind": "drive#permission",
     "id": "06030588225573437",
     "type": "user",
     "role": "writer"
    }
    

    这将为您提供相关用户的文件权限 ID。

    然后您可以使用permission.delete删除用户对该文件的权限

    var response = service.Permissions.Delete(fileId, permissionId).Execute();
    

    【讨论】:

    • 似乎只有在文件所有者指定我为编辑时才有效。如果我只是一个查看者,当我尝试对与我共享的文件进行 permissions.get、permissions.list 和 permissions.delete 时,我会不断收到 403 错误“权限不足”。是这样吗?
    • 好吧,如果您只读,我不希望删除工作。
    • permissions.list() 和 permissions.get() 也不适用于查看者角色用户。此外,即使是 permissions.delete() 我们也不会删除文件本身,只是删除文件的权限,即放弃查看文件的权限。在本机 Google Drive UI 中它可以工作 - 即使您的角色是“查看者”,您也可以从“与我共享”伪文件夹中“删除”任何文件,实际上这意味着删除权限。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多