2

背景:

这是关于使用使用 Google App 脚本创建的 Gmail 插件。当用户安装插件时,会出现 OAuth 同意屏幕,用户在其中同意允许“向用户显示产品名称”(如 OAuth 屏幕中配置的那样)允许指定的访问权限。

现在,我读到:https ://developers.google.com/identity/protocols/CrossClientAuth

其中指出:

当用户在特定范围内授予对您的应用程序的访问权限时,该用户正在查看用户同意屏幕,其中包括您在 Google API 控制台中设置的项目级产品品牌。(有关设置同意屏幕的信息,请参阅 API 控制台帮助中的设置 OAuth 2.0。)因此,Google 认为,当用户向项目中的任何客户端 ID 授予对特定范围的访问权限时,该授予表明用户的信任该范围的整个应用程序。

现在,我有一个服务器 Web 组件(一个 lambda)(属于同一产品),它需要访问用户的电子邮件,该访问权限与用户在安装插件后提供的相同访问权限(“授权访问”按钮)。

问题) :

在我的情况下,有没有办法让跨客户端(后端服务器和 gmail 插件)让后端只访问用户的数据而不触发额外的(基本上是用户同意的任何内容)?

注意:使用使用 GAS OAuth 库手动触发的附加授权屏幕,我能够获得传递给服务器的“身份验证代码”,服务器现在可以使用该代码访问同意的数据(我们使用了相同的客户端 ID 和秘密)。但是,这种方法的问题是:

  • 用户收到 2 封有关授予权限的电子邮件。插件和手动触发的流程。
  • 用户必须授权 gmail 插件进行首次访问,然后我手动触发另一个。即使有一种方法可以在用户安装插件时获得“验证码”也可以。

提前道歉,有很多零散的文档,虽然我经历了很多,但很可能我错过了一些东西。

4

1 回答 1

0

我们只发行一个授权码(刷新令牌)以换取一个用户授权/批准。您的应用无需用户批准即可在 Android 或 Web 上获取新的访问令牌。但是如果它再次需要刷新令牌,用户仍然需要批准该请求。因此,如果插件可以与您的服务器通信,您可以给它一个短暂的访问令牌或需要用户授权。

于 2018-03-14T09:08:20.753 回答