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

时间:2019-02-07 04:45:02

标签: authentication google-apps-script gsuite

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

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

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

那些足够勇敢地单击“查看权限”的用户将被带到下一条消息:

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

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

如何摆脱这种误导性消息?这不是Google帐户,而是他们在G-Suite上的组织帐户。这不是他们的全部日历,而只是共享的团队日历。它是在添加数据,而不是永久删除日历。它是由管理员在他们的G-Suite(不是未知的第三方)中发布的。

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

如果能为我指明正确的方向,我将不胜感激。


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

提供UI的应用需要阅读日历以显示可用的班次-因此我无法回避用户授权提示。

我尝试的另一种变化是让一个应用程序执行所有操作并像我一样运行,而另一个则不执行任何操作,只返回Session.getActiveUser()。我尝试通过XMLHttpRequest从客户端的第一个调用第二个。满足我的需求将是理想选择-但由于应用程序URL为script.google.com,我遇到了CORS错误,但实际上已重定向至script.googleusercontent.com。似乎没有办法在Google App脚本中设置CORS。

2 个答案:

答案 0 :(得分:1)

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

我选择将应用程序发布为访问用户,因为我认为这是获得访问用户ID的唯一方法-对于非G Suite帐户而言是正确的。

但是,当应用程序通过G Suite帐户发布时,即使将其设置为以发布用户身份执行,该应用程序仍可以访问同一G Suite域中的用户ID。

感谢Niek和TheMaster的帮助!

答案 1 :(得分:0)

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

可能的解决方案:

  • 2个Web应用程序-一个以您的身份运行,另一个以用户身份访问(仅使用配置文件)。第二个将是实际的Web界面,并使用特权将必要的信息发布到第一个。或

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

  • 使用权限最小的2范围3