【问题标题】:nodejs - Getting 401 error trying to download docs revisions with Google Drive API export linksnodejs - 尝试使用 Google Drive API 导出链接下载文档修订时出现 401 错误
【发布时间】:2020-10-20 19:09:07
【问题描述】:

我需要使用 nodejs 下载带有 Drive API 的谷歌文档的所有修订,但我不明白如何授权导出链接的请求。一旦我获得了我调用的每个修订的导出链接:

var options = {
           url: 'https://docs.google.com/feeds/download/documents/export/Export?id=1DRl6rbcVuuLVyb_WlhBLiYiCByWcS2bKGlLIsn7E8_8&revision=1&exportFormat=txt', //example link
           method: 'GET',
           headers: {
              Authorization: `Bearer ${jwToken}`, 
            },
           }
request(options).pipe(fs.createWriteStream(mydownloadfilename));

“jwToken”是我用来获取修订列表的令牌,所以我猜它应该仍然有效。但是,这样我得到了 401-Unauthorized 页面。我做错了什么?

谢谢

【问题讨论】:

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


【解决方案1】:

我也面临同样的问题。解决方法是使用

  1. OAUTH2 授权对文件具有编辑或所有者权限的用户
  2. 获取快速过期的访问令牌
  3. 调用文件/rev 的 V2 URI(V3 不起作用)以获取“导出链接” 3) 为您的格式类型调用正确的导出链接
  4. 然后您会从 Google 获得一个随机的临时重定向链接,然后您可以调用该链接来获取二进制流。

这是 C# .NET 的一个很好的起点 -- windows oauth console app,如果您希望工作代码执行步骤 1 和 2。我发布了一个工作 v2 code function here,您可以将其放入控制台应用程序示例中。

【讨论】:

    【解决方案2】:

    根据 Drive API v3 documentation

    Google 文档、表格和幻灯片的修订版无法下载。

    所以本质上,如果您要检索的实际版本是文件本身,那么上面的方法是正确的。

    至于授权部分,您需要从here 执行Node.js 快速入门,并按照其中说明的步骤进行操作。

    由于您要导出文件,您只需要修改代码并添加这部分:

    function downloadDoc() {
       var fileId = 'ID_OF_THE_DOC';
       var dest = fs.createWriteStream('DESTINATION_OF_THE_OUTPUT_STREAM');
       drive.files.export({
         fileId: fileId,
         mimeType: 'application/vnd.google-apps.document'
       })
           .on('end', function () {
             console.log('Done');
           })
           .on('error', function (err) {
             console.log('Error during download', err);
           })
           .pipe(dest);
    }
    

    参考

    【讨论】:

    • 感谢您的回复。我知道关于 api 参考的注释,但是如果我将它们粘贴到我登录到正确谷歌帐户的浏览器中,我从 revisions.list 获得的导出链接实际上可以工作,所以我不明白什么是这与使用 request() 从代码中调用它的区别。
    • 您的请求使用什么范围? @user13840873
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-15
    相关资源
    最近更新 更多