【发布时间】:2018-03-13 08:18:43
【问题描述】:
背景:
这是关于使用使用 Google 应用脚本创建的 Gmail 插件。 当用户安装插件时,会出现 OAuth 同意屏幕,其中用户同意“向用户显示产品名称”(如 OAuth 屏幕中配置的那样)以允许指定的访问权限。
现在,我读到:https://developers.google.com/identity/protocols/CrossClientAuth
其中规定:
当用户在特定范围内授予对您应用的访问权限时,该用户 正在查看用户同意屏幕,其中包括项目级别 您在 Google API 控制台中设置的产品品牌。 (为了 有关设置同意屏幕的信息,请参阅设置 OAuth API 控制台帮助中的 2.0 版本。)因此,Google 认为,当用户已授予对特定范围的访问权限以访问 项目,授权表示用户对整个应用程序的信任 对于那个范围。
现在,我有一个服务器 Web 组件(一个 lambda)(属于同一产品),它需要访问用户的电子邮件,该访问权限与用户在安装插件后提供的相同访问权限(“授权访问”按钮)。
问题:
在我的情况下,有没有办法让跨客户端(一个后端服务器和一个 gmail 插件)让后端只访问用户的数据而不触发额外的(基本上是用户同意的任何内容)?
注意:使用 GAS OAuth 库手动触发的附加授权屏幕,我能够获得“身份验证代码”,我将其传递给服务器,服务器现在可以使用它访问同意的数据(我们使用了相同的客户 ID 和密码)。但是,这种方法的问题是:
- 用户收到 2 封关于授予权限的电子邮件。插件和手动触发的流程。
- 用户必须先授权 gmail 插件才能首次访问,然后再授权我手动触发的另一个。 即使有一种方法可以让我在用户安装插件时获得“验证码”也可以。
提前道歉,有很多零散的文档,虽然我经历了很多,但很可能我错过了一些东西。
【问题讨论】:
-
我认为您需要将两个脚本添加到同一个 Google Cloud 平台项目中。
标签: google-apps-script google-oauth google-authentication gmail-addons