是否可以在 Google Apps Script 网络应用程序中使用多个身份验证?

IMT*_*Man 2 google-sheets google-apps-script

我知道如何编写一个网络应用程序并以我自己的身份发布它。我想要做的是发布一个网络应用程序,以便它可以访问我的数据用户数据。

例如,网络应用程序将从拥有的工作表中读取数据,然后将其添加到用户拥有的工作表中。

我意识到一种方法是让任何拥有链接的人都可以访问我的工作表,并使网络应用程序在用户的上下文中运行。当用户查看 web 应用程序时,它将在用户的上下文中运行,以便它可以访问他们的工作表,并且由于我的工作表可由任何有链接的人查看,因此它将能够访问我的工作表。

但是,我正在尝试这样做,而不会让任何有链接的人都可以访问我的工作表。

这可能吗?

The*_*ter 5

解决方法#1:两个网络应用

使用两个 Web 应用程序并处理这两个应用程序之间的身份验证:

  • WebApp#1:访问工作表的 API

    • 以“我”的身份执行
    • 访问:“任何人,甚至匿名”
    • 处理传入的 POST 请求:检查必要的授权,验证请求并从工作表返回数据。
  • WebApp#2:面向用户的应用

    • 作为“用户访问 Web 应用程序”执行
    • 访问:“任何人”
    • 用户从您的工作表中请求数据> 客户端请求 Server( google.script.run)> 服务器 POST 请求以及使用必要的授权标头UrlFetchApp> 接收并解析工作表数据并将其提供给客户端。
  • 笔记:

    • 此设置安全性仅与 Web 应用程序之间使用的授权/身份验证一样强大。

解决方法#2: 客户端 Google 登录

  • 在您的网络应用程序中实施Google 登录

    • 以“我”的身份执行
    • 访问:“任何人,甚至匿名”
    • 访问网络应用程序的用户必须登录
    • 登录并授权访问他们的工作表后,您可以使用工作表 api 写入他们的工作表
  • 参考:

  • @IMTheNachoMan 还有第三个选项(尽管更复杂),您可以利用服务帐户来访问您的工作表,而无需牺牲隐私。一个缺点是这种方法需要 GCP 项目。但是,可能存在您可以利用的漏洞。服务帐户不需要绑定到您公司的 GSuite 域,因此可以使用单独的非公司帐户创建服务帐户并在您的项目中使用它。您认为您的公司会同意吗? (2认同)