【问题标题】:Getting access error when using NodeJS to download shared file from Google Drive使用 NodeJS 从 Google Drive 下载共享文件时出现访问错误
【发布时间】:2018-01-27 23:28:42
【问题描述】:

我正在尝试构建一个节点 js 应用程序,该应用程序使用 googleapis npm 包并监视共享的 google 驱动器文件夹并自动下载新的或修改的文件。我可以访问该文件夹并查看文件,但是当我尝试下载时,我得到了这个响应(appid 和 fileid 已编辑):

 errors:
   [ { domain: 'global',
       reason: 'appNotAuthorizedToFile',
       message: 'The user has not granted the app read access to the file .',
       locationType: 'header',
       location: 'Authorization' } ] }

我已在 Google Drive API 上授权我的应用程序(这就是它可以成功查看文件的原因),但我不知道我需要做什么才能授予它下载这些公开共享文件的权限。我已经翻遍了 Google API 网站上的文档,但仍然无法弄清楚。我想避免使用文件选择器,因为我希望使过程自动化:它会看到一个新的/修改过的文件,然后下载它。有什么建议么?

【问题讨论】:

  • 当文件被所有者共享为“打开 - 任何知道链接的人”时,其他用户可以通过 Drive API 使用文件 ID 下载文件。如果这对你没有用,我很抱歉。
  • 感谢您的回复。不幸的是,我尝试将设置调整为“打开 - 任何知道链接的人”,然后也调整为不需要登录的公开共享。两者都不起作用,并且该应用程序继续给我与上述相同的错误。我已经验证我的 oauth 令牌似乎是正确的,并且正在通过调用下载文件。
  • 请问您要下载的共享文件的类型和大小?

标签: node.js google-api


【解决方案1】:

可能是您的客户端应用使用了错误的scope,它只允许您查看文件元数据。因此,您只能列出文件,但不能下载。

尝试将范围更改为允许您读取文件内容的内容(例如https://www.googleapis.com/auth/drive.readonly)。您可以按照Node.js quickstart 示例,看看那里是如何处理范围的。

请记住,当您更改范围时,您还需要获取新的访问令牌。

【讨论】:

  • 谢谢!这正是问题所在。
猜你喜欢
  • 1970-01-01
  • 2021-07-26
  • 1970-01-01
  • 1970-01-01
  • 2012-12-06
  • 1970-01-01
  • 1970-01-01
  • 2021-10-24
  • 2022-09-14
相关资源
最近更新 更多