当前位置: 首页 > 知识库问答 >
问题:

如何在服务器端验证Google Drive API请求(没有OAuth)

訾渝
2023-03-14

以下情况:

  • 我们使用第三方服务将文件上传到特定谷歌账户内的特定驱动器文件夹(唯一可能的方式)
  • Zapier集成监听新文件的创建,并使用文件的元数据创建一个新的db条目

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

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

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

Google Drive API、Oauth和服务帐户

如何在没有用户干预的情况下授权应用程序(网络或已安装)?

基本上,我想在我的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参数可以有几种类型:

共有2个答案

金皓君
2023-03-14

从驱动API官方文档:

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

只有当您正在访问的资源是公开访问的(例如,如果您与具有链接的任何人共享文件),您才能避免使用OAuth,而是使用API密钥。不过,根据你说的,你想访问的硬盘不是公开的。

不管它是单驱动器还是你自己的;如果它不是公共的,您需要OAuth来访问它。

当然,如果你想做的是在没有任何用户交互的情况下走授权流程,你可以使用一个服务号。然而,在这种情况下,即使没有用户交互,您仍将使用OAuth:有关此特定授权流(通常称为“双腿OAuth”)的更多信息,请参阅为服务器到服务器应用程序使用OAuth 2.0。

该服务帐户可以单独使用,以便您与该服务帐户共享驱动器,也可以用来模拟另一个帐户,以便它代表一个常规帐户,并访问该常规帐户可以访问的相同资源。

  • 认证概述
  • 作为服务帐户进行身份验证
  • 从Google Cloud函数访问Google Drive API
罗昊明
2023-03-14

根据官方文件:

身份验证为服务号

如果您的应用程序在具有默认服务帐户的谷歌云环境中运行,则您的应用程序可以检索服务帐户凭据以调用谷歌云API。这些环境包括计算引擎、谷歌库伯内特斯引擎、应用程序引擎、云运行和云功能。我们建议使用此策略,因为它比手动传递凭据更方便、更安全。

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

 类似资料:
  • 问题内容: 我刚刚用复选框设置了新的google recaptcha,它在前端工作正常,但是我不知道如何在服务器端使用PHP处理它。我尝试使用下面的旧代码,但是即使验证码无效,也会发送表格。 问题答案: 这是解决方案 index.html verify.php http://codeforgeek.com/2014/12/google-recaptcha- tutorial/

  • 我需要使用拦截器验证并记录grpc服务请求的一些数据。我检查了ServerInterceptor的interceptCall,但找不到获取请求对象的方法。有没有办法让请求对象进入拦截器?

  • 问题内容: 进行客户端或服务器端验证哪个更好? 在我们的情况下,我们正在使用 jQuery和MVC。 在我们的视图和控制器之间传递的JSON数据。 我所做的许多验证工作都是在用户输入数据时对其进行验证。例如,我使用该事件来防止文本框中的字母,设置最大字符数,并且该数字在一定范围内。 我想更好的问题是,与客户端相比,进行服务器端验证是否有任何好处? 真棒的答案大家。我们拥有的网站受到密码保护,并且用

  • 我有一个谷歌应用程序脚本绑定到一个需要读取AdWords数据的电子表格。因为它是一个自动向服务器更新的用户权限。 在浏览了大量文档之后,我创建了一个服务帐户,并根据以下指南授予它必要的权限:https://developers.google.com/adwords/api/docs/guides/authentication#oauth2_service_accounts 我还没有完全理解下一步,

  • 问题内容: 我有一个在Firebase上编写的应用程序。安全规则和客户端代码还不足以使我的应用正常工作。我需要连接服务器来执行一些任务: 清理非规范化的数据,这对于使用onDisconnect处理程序进行清理具有挑战性 建立数据的其他索引,这超出了 查询的能力范围 问题答案: _更新日期(20160611):如果您在https://firebase.google.com上创建了项目,则从服务器访问