我在 Google Drive 中创建了由 Google 电子表格支持的脚本,并将其发布为网络应用程序,设置“执行应用程序为:我”和“谁有权访问该应用程序:任何人,甚至匿名”。主页提供电子表格中的 html 内容。
基本功能是:“随机互联网用户”能够看到一些信息,而使用其 Google 帐户登录的用户也能够提交信息。
问题是 - 如果我将权限设置为“任何人”,人们首先会被重定向到标准的谷歌登录页面,并且登录后必须接受脚本权限。完成后,只要您使用 Google 帐户登录,导航到网络应用程序就会显示“已登录用户”版本。
但是 - 如果网络应用程序设置为允许“匿名用户”,则似乎没有任何(至少是明显的方式)允许匿名用户登录并接受应用程序权限。
到目前为止我已经尝试过的:
- 如果网络应用程序要求用户登录,则如果我未登录,谷歌会将我重定向到网址的链接。这可行,但我觉得这不是正确的方法,而且一旦登录,就没有办法了注销或切换帐户;似乎一旦登录,就永远登录了
- to use https://developers.google.com/apps-script/reference/script/authorization-info#getAuthorizationUrl() https://developers.google.com/apps-script/reference/script/authorization-info#getAuthorizationUrl()获取身份验证网址 - 但我不知道如何使用它返回的网址(将用户导航到顶部框架上的网络应用程序框架中的该页面都会导致空白页面)
如何获取登录(可能还有切换登录)URL 以允许匿名用户登录我的网络应用程序?
为 2 个 .gs Web 应用程序项目创建了示例代码:one https://script.google.com/d/1GKhyJCvWfp11bJBP30u5MuC-Qx3ld0nGPevJjMnxl1HrWahDku_obQ52/edit?usp=sharing- 无需身份验证,以所有者身份运行,匿名可以访问two https://script.google.com/d/1DwYTfnsRzZ6eFA8zzWpMvtfQjDO3oa2t28N1d9w3_toO0pz3stxxkm5e/edit?usp=sharing- 需要身份验证,以用户身份运行,任何人都可以访问
...因为我不知道您的“我可以将用户重定向到 URL”语句在代码中是什么样子。
第一个文件有一个带有点击侦听器的按钮作为登录按钮,但它只是调用window.top.location.href
改变。
第二个应用程序正在使用ScriptApp.invalidateAuth();
从客户端按钮单击调用后注销用户。
Demo https://script.google.com/macros/s/AKfycbxVKXU_5wSRO_OxQ1nVB9sRe5P8rAvy6J7SYQSIPk0hiWEMJPsd/exec- 第一个网络应用程序网址
我仍然投票选择只提供第二个网络应用程序作为在新窗口中弹出的链接,正如我在评论中指出的那样,上面的设置强制用户每次和注销后重新授权。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)