服务器和Gmail插件之间的CrossClient授权

时间:2018-03-13 08:18:43

标签: google-apps-script google-oauth google-oauth2 google-authentication gmail-addons

背景

这是关于使用使用Google App Script创建的Gmail插件。 当用户安装插件时,会有OAuth同意屏幕,其中用户同意允许向用户显示"产品名称" (在OAuth屏幕中配置)以允许指定访问。

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

指出:

  

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

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

问题:

在我的情况下是否有办法让跨客户端(后端服务器和gmail插件)让后端只是访问用户的数据而不会触发额外的(基本上无论用户提供了什么同意)到)?

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

  • 用户收到2封有关授予权限的电子邮件。插件和手动触发流程。
  • 用户必须授权首次访问gmail插件,然后手动触发另一个。 即使有办法,我也可以获得#34; Auth Code"当用户安装也会这样做的插件时。

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

1 个答案:

答案 0 :(得分:0)

我们只发出一个授权码(刷新令牌)以换取一个用户授权/批准。您的应用无需用户批准即可在Android或网络上获取新的访问权限。但如果它再次需要刷新令牌,用户仍需要批准该请求。 因此,如果插件可以与您的服务器通信,您可以为其提供一个短期访问令牌,或者需要用户授权。