繁体   English   中英

G-Suite 用户访问 G-Suite 可信应用脚本时,如何避免脚本授权提示?

[英]How to avoid script authorization prompt when G-Suite user is accessing G-Suite trusted app script?

我编写了一个应用程序脚本,它提供了一个 Web UI,用于将数据输入到团队日历中。 我使用 G-Suite 超级管理员帐户发布了它,并将其添加为安全/API 权限下的受信任应用程序。 在“内部应用程序设置”下选中“信任域拥有的应用程序”。

当我们组织中的 G-Suite 用户尝试访问该应用程序时,他会看到

“ShiftSchedulingApp 的开发者 admin@_our_organization_.org,需要您的许可才能访问您在 Google 上的数据。”

那些勇敢地点击“查看权限”的人会被带到下一条消息:

“ShiftSchedulingApp 想要访问您的 Google 帐户。查看、编辑、共享和永久删除您可以使用 Google 日历访问的所有日历”

当然,没有人愿意冒险丢失他们 Google 帐户中的所有日历,这就是结束的地方。

我如何摆脱这种误导性信息? 这不是 Google 帐户,而是他们在 G-Suite 上的组织帐户。 这不是他们所有的日历,只是共享的团队日历。 它正在添加数据,而不是永久删除日历。 它是由他们的管理员在他们的 G-Suite 中发布的,而不是一个未知的 3rd 方。

我花了几天时间试图让这条消息消失,但没有运气。 应用程序必须作为访问用户而不是发布用户执行,因为他们的用户 ID 决定了他们可以在日历上填写哪些班次。

我很感激任何为我指明正确方向的提示。


我按照建议尝试了两种应用程序方法的变体。

提供 UI 的应用程序需要读取日历以显示可用的班次 - 所以我无法摆脱用户授权提示。

我尝试的另一种变化是让一个应用程序做所有事情并像我一样运行,而另一个应用程序只做返回 Session.getActiveUser()。 我尝试通过 XMLHttpRequest 在客户端从第一个调用第二个。 它非常适合我的需求 - 但我遇到了 CORS 错误,因为应用程序 URL 是 script.google.com 但它实际上被重定向到了 script.googleusercontent.com。 似乎没有办法在 Google App Script 中设置 CORS。

虽然我无法找到一种方法来避免在以访问用户身份执行应用程序时提示用户进行授权,但事实证明我这样做的原因是基于错误的前提。

我选择将应用发布为访问用户,因为我认为这是获取访问用户 ID 的唯一方法——这对于非 G Suite 帐户来说是正确的。

但是,当应用程序由 G Suite 帐户发布时,即使该应用程序设置为以发布用户身份执行,该应用程序也可以访问同一 G Suite 域内的用户 ID。

感谢 Niek 和 TheMaster 的帮助!

如果您只需要user ID ,为什么要要求所有这些权限?

可能的解决方案:

  • 2 个网络应用程序 - 一个作为您运行,另一个作为用户访问(仅具有个人资料)权限。 第二个将是实际的 Web 界面,并将必要的信息 POST 到具有特权的第一个。 或者

  • 实施您自己的网络应用程序 Google 登录1

  • 使用最宽松的2范围3

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM