首页 > 解决方案 > 如何删除不属于我但与我共享的文件 Google Drive API v3

问题描述

这是我的问题:

  1. 我有一个我自己的文件夹。
  2. 我将X帐户的权限设置为我的文件夹为“作家”
  3. X 帐户将文件上传到我的文件夹。(X 成为所有者,我成为该文件的编辑/作者/贡献者)
  4. 我可以通过drive.google.com将上传的文件移动到垃圾箱,但不能通过 Drive Api v3

这是我的代码:

setTrashedTrue(fileId, callback) {
    authenticate(function (auth) {
        const drive = google.drive({ version: 'v3', auth });
        drive.files.update(
            {
                fileId,
                resource: {
                    trashed: true
                }
            },
            (err, res) => {
                if (err) return console.log('The API returned an error: ' + err);
                callback(res);
            }
        );
    });
}

我用来编写上述代码的资源:https ://developers.google.com/drive/api/v3/reference/files/update

这会引发一个错误,上面写着:

API 返回错误:错误:用户对此文件没有足够的权限。

显然你不能删除你不拥有的文件。因为它试图永久删除它。但是我应该能够像使用驱动器网站一样将其移至垃圾箱。

我打印了上传文件的详细信息。这是相关的结果:(功能适用于我的帐户,而不是文件的所有者。)

  ...
  ownedByMe: false,
  capabilities: {
    ...
    canDelete: false,
    canDownload: true,
    canEdit: true,
    canListChildren: false,
    canModifyContent: true,
    canMoveItemIntoTeamDrive: false,
    canMoveItemOutOfDrive: false,
    canReadRevisions: true,
    canRemoveChildren: false,
    canRename: true,
    canShare: true,
    canTrash: false,      <--------------
    canUntrash: false
  }
  ...

如您所见,它告诉我我无权丢弃它,但实际上我有。那么,作为编辑者,我如何删除不属于我但与我共享的文件?

标签: javascriptnode.jsgoogle-apigoogle-drive-apirecycle-bin

解决方案


推荐阅读