Node.js 谷歌驱动程序API说;“禁止”;获取文件时

Node.js 谷歌驱动程序API说;“禁止”;获取文件时,node.js,google-drive-api,google-apis-explorer,Node.js,Google Drive Api,Google Apis Explorer,出于某种原因,我想从google驱动器中获取文件并在服务器上处理它。我从选择器获取文件ID并将其发送到后端进行下载和处理。因此,在使用googleapis下载文件时,我遇到了这个错误 先决条件 项目中已启用驱动器API 访问令牌具有驱动器的权限 我尝试过的权限 我使用的代码来自GitHub const tmpDir=path.resolve(path.join(os.tmpDir(),“用户表”); const file=path.join(tmpDir,Date.now().toStr

出于某种原因,我想从google驱动器中获取文件并在服务器上处理它。我从选择器获取文件ID并将其发送到后端进行下载和处理。因此,在使用googleapis下载文件时,我遇到了这个错误

先决条件

  • 项目中已启用驱动器API
  • 访问令牌具有驱动器的权限
  • 我尝试过的权限

  • 我使用的代码来自GitHub

    const tmpDir=path.resolve(path.join(os.tmpDir(),“用户表”); const file=path.join(tmpDir,Date.now().toString()); 让stream=fs.createWriteStream(文件); 让drive=google.drive({ 版本:“v3”, 认证:“我的访问令牌”, }); 驱动器文件 .得到( { fileId:req.body.url, alt:“媒体”, oauth_令牌:“我的访问令牌”, }, { 响应类型:“流”, } ) 。然后((r)=>{ r、 资料 .on(“结束”,异步()=>{ 控制台日志(“结束”); stream.close(); }) .on(“错误”,函数(错误){ log(“下载时出错”,err); res.json({ 成功:错, 信息:“出了点问题”, 错误:呃, }); }) .管道(溪流); }) .catch((e)=>{ 控制台错误(如响应); });
    在这个答案中,我想有以下几点

    • MY ACCESS TOKEN
      of
      auth:“MY ACCESS TOKEN”
      是下载文件的有效访问令牌
    • req.body.url
      fileId:req.body.url,
      是不是url的文件ID
    如果我的猜测不正确,请告诉我

    当我的猜测正确时,请确认以下修改

    修改点:
    • 不幸的是,
      MY ACCESS TOKEN
      不能直接用于
      google.drive()
      drive.files.get()
    当这一点反映到脚本中时,它将变成如下所示

    修改脚本: 发件人: 致: 注:
    • 在这种情况下,可以下载除Google文档文件(Google文档、Google电子表格、Google幻灯片等)以外的文件。请小心这个
    参考:

    但是如果您想看到打字,它也接受
    字符串
    @tbhaxor,谢谢您的回复。我不得不为我糟糕的英语水平道歉。不幸的是,我无法理解
    ,但如果您看到打字,它也接受字符串。我能问一下细节吗?@tbhaxor谢谢你的回复。我很高兴你的问题解决了。
    
    let drive = google.drive({
        version: "v3",
        auth: "MY ACCESS TOKEN",
    });
    
    drive.files
        .get(
            {
                fileId: req.body.url,
                alt: "media",
                oauth_token: "MY ACCESS TOKEN",
            },
            {
                responseType: "stream",
            }
        )
    
    var oauth2Client = new google.auth.OAuth2();
    oauth2Client.setCredentials({access_token: "MY ACCESS TOKEN"});
    const drive = google.drive({
      version: "v3",
      auth: oauth2Client,
    });
    drive.files
      .get(
        {
          fileId: req.body.url,  // Please use the file ID here.
          alt: "media",
        },
        { responseType: "stream" }
      )