【问题标题】:Api rest google drive folder not visible after creation by nodejs由nodejs创建后,Api rest google drive文件夹不可见
【发布时间】:2019-02-15 10:14:23
【问题描述】:

通过 google api rest 创建文件夹时,我无法从 google 驱动器控制台看到新创建的文件夹。该代码有效,它返回包含刚刚创建的文件夹的所有数据的 json。

function createFolder(nameProduct,folderId){
    console.log("nome folder : "+nameProduct);
    console.log("id parent : "+folderId);
    var fileMetadata = {
        'name': nameProduct,
        'mimeType': 'application/vnd.google-apps.folder',
        parent : [folderId]
      };
      let objFolder = {
        auth: jwToken,
        resource: fileMetadata,
        fields: 'id'
      }
      return new Promise((resolve,reject)=>{

      drive.files.create(objFolder).then(function(response) {
        // Handle the results here (response.result has the parsed body).
        console.log("Response", response);
        resolve(response);
        },
        function(err) { 
          // handle error here.
          reject(err);
          console.error("Execute error", err);
         });
      });
    }


var jwToken = new google.auth.JWT(
  key.client_email,
  null,
  key.private_key, ["https://www.googleapis.com/auth/drive"],
  null
);
jwToken.authorize((authErr) => {
  if (authErr) {
    console.log("error : " + authErr);
    return;
  } else {
    console.log("Authorization accorded");
  }
});

身份验证工作正常,我可以创建文件。我只有文件夹有这个问题。 为什么在 google drive 上看不到?该方法正确返回id

【问题讨论】:

  • 你是如何对谷歌驱动器进行身份验证的,你可以发布你的代码吗?
  • 谢谢大佬,我更新帖子了
  • 那是服务帐号对吧?

标签: node.js google-api google-drive-api google-api-nodejs-client


【解决方案1】:

您似乎正在使用服务帐户进行身份验证。服务帐户是虚拟用户,他们有自己的 google drive 帐户、google 日历帐户,可能还有更多。

当您上传该文件时,它会上传到服务帐户谷歌驱动器帐户。服务帐户没有 Web 视图,您只能通过编程方式访问它。

选项:上传到您的帐户

在您的 google drive 帐户上创建一个目录,与服务帐户共享该目录并上传到该目录。

选项:与您共享服务帐户目录

让服务帐户创建一个目录,然后授予自己对该目录的权限。然后,您将能够在您的帐户中看到该目录。

注意

当服务帐户上传文件时,它将成为该文件的所有者,请确保您授予自己对这些文件的权限,否则您将无法访问它们。是的,您可以在您的驱动器帐户上拥有您无权访问的文件。 ?

【讨论】:

  • 感谢您的建议和时间。但是我的用户是项目所有者,是具有角色所有者(和编辑者)的管理帐户。奇怪的是我无法通过API只创建文件夹,例如关于图像我没有问题...
  • 您的用户是项目所有者无关紧要,与它无关。服务帐户是它自己的用户尝试通过服务帐户运行about.get。如果您想上传到您的个人驱动器帐户(项目所有者),请转到驱动器创建一个新目录,与服务帐户电子邮件地址共享该目录。然后执行files.list 查找目录
猜你喜欢
  • 2015-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多