有什么方法可以在调用appscript Execution API之前刷新oauth令牌?

时间:2019-08-29 13:04:03

标签: google-apps-script execution-api

我正在从Web应用程序调用应用程序脚本执行API。我得到ScriptApp.getOauthToken()并将其存储在工作表中。当我打开Web应用程序时,我将获取存储的访问令牌并在其帮助下调用执行API。

但是问题是,一段时间后令牌已过期,并且说

  

需要授权

当我调用执行API时。

有什么方法可以使访问令牌保持活动状态或在需要时刷新它吗?

1 个答案:

答案 0 :(得分:0)

I。您不能,也不应。至少不是本地的

没有用于获取和交换刷新令牌的本地Google Apps脚本服务方法(如果要刷新过期的OAuth 2.0令牌,则需要一种)来代替承载令牌。就是说,存储通过getOauthToken方法获得的短期令牌没有实际原因-如果用户授权了您的应用程序,则您可以在每次需要请求时即时请求令牌。

II。如果您仍然愿意,请使用图书馆

有一个officially endorsed library用于Google Apps脚本,可以为您管理OAuth 2.0流。使用它时,如果在颁发令牌时将脱机访问权限设置为true,则可以获得刷新令牌。

III。如果您真的想自己动手做,可以随时制作自己的流程

通过使用自定义工具,可以通过构建自定义JWT令牌并将其与Google Identity Platform端点交换来执行完整的Oauth 2.0流(无论是否进行用户交互)。但这意味着您将必须管理一切

  1. 构建JWT自定义令牌标头和有效载荷,然后对它们进行base64 url​​encode编码,并使用适当的签名进行签名,并连接成令牌。
  2. 将自定义JWT交换为短暂的承载令牌,对其进行验证并提取到期时间,然后保留该令牌。
  3. 每次从存储中获取令牌时,请检查到期时间,然后使用第1-2点中的过程重新发出令牌。
  4. 处理令牌吊销(请注意,仅在您的应用程序中,您将无法从Google的服务器使令牌无效)。
  5. 一路走来,还有更多警告。

请注意,令牌不能“保持有效”,这与OAuth协议背后的想法背道而驰-单个令牌的寿命越短,应用程序的安全性就越好。