【问题标题】:How to authenticate Google Drive API requests server side (without OAuth)如何验证 Google Drive API 请求服务器端(没有 OAuth)
【发布时间】:2021-01-26 20:58:14
【问题描述】:

以下情况:

  • 我们正在使用第三方服务将文件上传到特定 Google 帐户中的特定驱动器文件夹(唯一可能的方式)
  • Zapier 集成监听新文件创建并使用文件的元数据创建新的数据库条目

现在我想设置一个无服务器云函数来监听新的数据库条目,从元数据中检索 fileId,然后下载文件并立即将其上传到谷歌云存储

我的问题是实际验证此下载请求。理想情况下,不涉及 OAUTH,因为它实际上是我们想要触摸的单个驱动器,我们也拥有它。

我找到了一些相关的解决方案,但它们不太适合。

Google Drive API, Oauth and service account

How do I authorise an app (web or installed) without user intervention?

基本上我想在我的 serverles 函数中执行此操作:

 const drive = google.drive({ version: "v3", auth: "WHAT_KEY_IS_NEEDED_HERE?" });
    const zip = await drive.files.get({
      fileId: "1iwXhoQfFvR8uVuVWAf1onq2O8Hs-M_0H",
      alt: "media",
    });

发出经过身份验证的请求需要什么密钥?我可以使用服务帐户,还是可以为此驱动器创建一个永久有效的个人使用令牌? auth 参数可以有多种类型:

【问题讨论】:

    标签: javascript google-cloud-platform google-drive-api google-cloud-functions google-cloud-storage


    【解决方案1】:

    根据官方文档:

    Authenticating as a service account

    如果您的应用在具有 默认服务帐户,您的应用程序可以检索服务 调用 Google Cloud API 的帐户凭据。这样的环境 包括 Compute Engine、Google Kubernetes Engine、App Engine、Cloud 运行,然后 Cloud Functions。我们建议使用此策略,因为它 比手动传递凭据更方便和安全。

    因此,如果您的代码访问属于您自己的应用程序的数据,您可以使用您的云功能的默认服务帐户(App Engine 服务帐户)

    【讨论】:

      【解决方案2】:

      必须使用 OAuth 才能访问非公开文件:

      来自 Drive API official docs

      您的应用程序必须使用OAuth 2.0 来授权请求​​。不支持其他授权协议。

      只有当您访问的资源可以公开访问(例如,如果您与 Anyone with the link 共享文件),您才能避免使用 OAuth,而使用 API 密钥。不过,根据您的说法,您要访问的云端硬盘不是公开的。

      无论是单个驱动器还是您拥有它都没有关系;如果它不是公开的,则需要 OAuth 才能访问它。

      避免用户交互的服务帐号:

      当然,如果你想做的是在没有任何用户交互的情况下完成授权过程,你可以使用服务帐户。不过,在这种情况下,即使没有用户交互,您仍将使用 OAuth:请参阅 Using OAuth 2.0 for Server to Server Applications 了解有关此特定授权流程(通常称为“2-legged OAuth”)的更多信息。

      服务帐户可以单独使用,以便您与服务帐户共享云端硬盘,也可以将其用于impersonate another account,以便代表普通帐户访问相同的帐户此常规帐户可以访问的资源。

      相关:

      【讨论】:

        猜你喜欢
        • 2019-05-22
        • 1970-01-01
        • 2019-03-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-16
        • 2018-01-11
        • 2022-06-13
        相关资源
        最近更新 更多