【问题标题】:CrossClient Authorization between Server and Gmail Addon服务器和 Gmail 插件之间的跨客户端授权
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-21
    • 2013-08-23
    • 1970-01-01
    • 2011-07-02
    • 2023-03-12
    • 2011-02-10
    • 1970-01-01
    • 2018-10-12
    相关资源
    最近更新 更多