共享文件用户无法使用drive.file范围访问文件在Google Drive API中

时间:2019-12-04 08:44:03

标签: javascript google-api google-drive-api

当共享用户登录App时。共享文件无法访问。 API返回“找不到文件”。

var SCOPES = ["https://www.googleapis.com/auth/drive.file", "profile"];
function createPermissions(fileId, body) {
  gapi.client.load("drive", "v3", function() {
    gapi.client.drive.permissions
      .create({
        fileId: fileId,
        resource: body
      })
      .then(function(res) {
        //console.log(res);
        Swal.fire("Success!", "File has been success shared!", "success");
        // do something
      })
      .catch(function(err) {
        //console.log(err);
        Swal.fire({
          icon: "error",
          title: "Oops...",
          text: "Something went wrong! Plese try agian later!!",
          footer: ""
        });
        // do something
      });
  });
}

上面的代码工作正常,文件已成功共享,但是共享用户会收到共享文件的电子邮件通知,并且当共享用户单击共享文件时,可以在Google驱动器中访问电子邮件文件。即:Manoj(应用程序所有者)在google APP(Google驱动器API)中上传文件,并与“ Rigal”共享文件。 Rigal收到了共享文件的电子邮件通知,并且文件也显示在他的Google驱动器中。但是,当Rigal在App(Google驱动器API)中登录时,他无法查看(访问)共享文件。 谢谢

1 个答案:

答案 0 :(得分:0)

可以通过实施搜索查询q

来过滤列表文件的搜索结果。
  • 如果Rigal为q指定了“ sharedWithMe”-仅列出与其他人共享的文件。
  • 如果Rigal额外指定了'test@example.org' in owners,则可以从结果中消除其他人与Rigal共享的文件。
  • 无法区分由Manoj的应用程序而非手动由Manoj与Rigal共享的文件,除非Monoj的应用程序使用service account(最终与impersonation)共享Rigal文件。

基于您使用的Drive v3 API快速入门的示例:

function listFiles() {
        gapi.client.drive.files.list({
          'q': "sharedWithMe and 'test@example.org' in owners"
          'pageSize': 10,
          'fields': "nextPageToken, files(id, name)"
        }).then(function(response) {
          appendPre('Files:');
          var files = response.result.files;
          if (files && files.length > 0) {
            for (var i = 0; i < files.length; i++) {
              var file = files[i];
              appendPre(file.name + ' (' + file.id + ')');
            }
          } else {
            appendPre('No files found.');
          }
        });
      }