为什么基于时间的触发授权每周都会过期?

时间:2021-06-02 03:38:04

标签: google-apps-script

tl;dr:我通过基于时间的触发器运行脚本,但 Apps 脚本抛出“执行该操作需要授权”。每周都会出错。我怀疑这是因为新的 OAuth“测试用户”要求,但我不确定。

我目前正在通过基于时间的触发器调用 Google Apps 脚本。不久前,我为此脚本创建了一个 Google Cloud Platform (GCP) 项目以及与它结合使用的其他一些项目。

因为我在个人 Google 帐户的上下文中运行,所以 GCP 项目不是组织的一部分。这表明所需的 OAuth 同意屏幕设置为“外部”,其中 GCP 声明“您的应用将以测试模式启动,并且仅对您添加到测试用户列表的用户可用。”我的帐户被列为测试用户。

我观察到我的基于时间的触发器失败,并显示“执行该操作需要授权”。每周都会出错。这是这个脚本的一个破坏者,它必须自己运行很长时间。

我过去从未见过这种行为,我猜测这些需要测试用户的 OAuth 设置是新设置,不会影响我的旧 GCP 项目(运行 find)。

任何想法将不胜感激。

1 个答案:

答案 0 :(得分:0)

尝试创建一个未链接到用户控制的 GCP 项目的新 Apps 脚本项目

也就是说,不要将您的 Apps 脚本项目链接到 GCP 项目。让它为一般的 Apps 脚本项目使用默认的(谷歌控制的)项目。 Cloud Platform Projects

有关取消授权的更多信息。

最近的安全限制似乎已经生效。这个问题是在此处向 Google 提出的:

Random Deauthorizations for script since Editor Update with no changes to code

其中讨论了这些问题。虽然正如您所见:

<块引用>

测试用户的授权自同意之日起 7 天后到期。

Source

<块引用>

为外部用户类型配置了 OAuth 同意屏幕且发布状态为“测试”的 Google Cloud Platform 项目获得了 7 天后到期的刷新令牌。

Source

由于您拥有的是 GMail 帐户而不是 Workspace 帐户,因此您将无法将 GCP 状态设置为“内部”,因此,如果不验证您的项目,您将无法获得更长的授权此用例超过 7 天。

在上面链接的问题跟踪器线程中,OP 说:

<块引用>

我已经从标准 GCP 中删除了这些项目,并更改为默认的 Apps 脚本管理项目(对于那些我可以也不需要作为详细日志记录的项目),他们已经停止出现身份验证问题。< /em>

这大概是因为 Apps Script 项目对这类个人应用程序有更多的余地。我在基于时间的触发器(使用 derfault GCP 项目)上在我的 GMail 帐户上运行一些脚本,并且它可以顺利运行

如果您绝对需要在 GCP 项目中使用它,那么您必须为 Workspace 帐户付费并将项目设置为“内部”。

参考资料