如何解决使用匿名网络应用程序时出现的 Google 登录问题

问题描述 投票:0回答:1

我是应用程序脚本的新手,希望匿名用户访问我的 Web 应用程序脚本,该脚本是绑定到电子表格的容器。

网络应用程序显示一个表单,该表单收集脚本存储在包含的电子表格中的信息,当我登录到我的谷歌帐户时,它工作得很好,但是当注销时,网络应用程序网址显示谷歌登录屏幕而不是我的表单。

我正在努力寻找解决此问题的方法。我查过:

  • 该脚本被部署为以“我”身份执行,并且任何人+匿名都可以访问
  • 我正在使用“exec”网址
  • 我已将 oauth 范围放入清单并尽可能缩小范围
  • 我已批准未经验证的应用程序。

这里有一些额外的元素,我不知道它们是否会引起问题:

  • 我将单个查询参数添加到 Web 应用程序执行 URL,然后将其发送给用户以供他们匿名使用。
  • 除了 doget() 之外,脚本中还有许多其他函数,这些函数处理来自 Web 应用程序表单的数据,将数据写入包含的电子表格并将其中一些返回给用户。在同一脚本中,我还在包含的电子表格中添加了一个菜单。

获取此问题的日志记录或故障排除信息的方法似乎很少 - 特别是对于容器绑定脚本。任何有更多经验的人都可以解释为什么会出现此问题并建议我如何排除故障并解决它吗?正如我所说,当我登录时,网络应用程序网址工作得很好,但是当我注销或处于隐身模式时,我会得到一个 Google 帐户登录表单。 谢谢。

google-apps-script deployment web-applications
1个回答
1
投票

我解决了这个问题,同时根据要求创建了一个最小的可重现示例。

问题在于我对部署、/exec、/dev 和 V8 与 rhino 的混淆。 这个关于 /dev /exec 的答案非常有帮助。

我发现的是:

/dev 总是要求您登录您的谷歌帐户,如果您没有在浏览器中登录,例如隐身模式。

正如评论所述,在什么情况下 V8 getUrl() 返回 /dev 或 /exec 存在一些混乱。

我对匿名网络应用程序进行故障排除的建议:

  1. 使用 /dev 测试匿名 Web 应用程序时要非常小心 - 它总是会导致登录请求
  2. 仔细检查 getURL() 返回的内容 - 结合您使用的是 rhino 还是 V8。

我通过将清单“降级”到犀牛来解决我的特殊问题:

"runtimeVersion": "DEPRECATED_ES5"

© www.soinside.com 2019 - 2024. All rights reserved.