如果我的英语很奇怪,我很抱歉。
我想知道非管理员帐户如何使用admin SDK。如果你有什么建议,请告诉我。
我正在使用谷歌应用程序脚本为一所小学开发一个插件。我想限制API的学生,老师,年级等。所以我需要获得组织信息。
还有其他一些类似的问题,显然不可能正常进行。
当使用Admin SDK时,谷歌将向用户显示接受确认屏幕。一旦用户同意,谷歌就会为该应用程序提供一个短期有效的访问令牌。我想我可以通过使用该访问令牌来实现这一点。从安全角度来看,这种做法危险吗?
很抱歉没有解释。
我目前正在为一所小学开发一个谷歌幻灯片插件。它应该在侧边栏中显示一个用vuejs制作的SPA,并让你操纵它
例如,我们可以提前管理可以使用此应用程序的组织的白名单,而不允许与白名单不匹配的组织使用它。
如果组织由学校单位管理,访问控制可以按域进行,但在某些地区,组织由城市管理,因此无法实现学校单位的访问控制。。。
另外。如果我们匹配白名单,我们想做以下事情。
-
教师和学生可以使用的功能有不同的
-
按钮可以根据学生。
-
在幻灯片上自动输入学生姓名和班级名称。
使用组织结构来管理学校和学生。(https://support.google.com/a/answer/4352075?ref_topic=4390186&hl=en(
我们认为我们可以通过使用Admin SDK来获取组织信息来实现这一点
答案
不可能像Google在文档中所说的那样,将Admin SDK与非Admin帐户一起使用:此API使Google Workspace域的管理员(包括经销商(能够管理其域中的设备、组、用户和其他实体
然而,有两种解决方案可以解决您的问题,但您需要使用管理员帐户来配置场景。
初始方法
- 使用类Session和方法getActiveUser和getEmail:
var email = Session.getActiveUser().getEmail();
获取正在运行应用程序的用户 - 获取每个用户所属的组织单位。使用此信息,您将能够筛选用户并在加载项中显示不同的选项。主要问题是您需要使用AdminDirectory.Users.get(userEmail(来获取
organizational unit
,并且它需要以下授权范围:https://www.googleapis.com/auth/admin.directory.user.readonly
解决方案1
- 创建一个
Spreadsheet
,其中包含将要使用该加载项及其organizational unit
的所有用户 - 使用"列出所有用户"获取域中的所有用户,并在第一列中写入每封电子邮件
- 使用
AdminDirectory.Users.get(email).orgUnitPath
获取organizational unit
并将其写入下一列 - 最后,当用户使用附加组件时,在
Spreadsheet
中搜索活动用户(Session.getActiveUser().getEmail()
(的电子邮件,获取行号并获得第二列中的organizational unit
的值
解决方案2
- 创建一个自定义管理员角色,并将其分配给将要使用该插件的每个用户您必须以超级管理员身份登录才能执行此任务您可以在此处执行并选择
Users -> Read
- 为创建角色分配的每个用户分配新角色
- 最后,用户将能够使用
var organization = AdminDirectory.Users.get(email).orgUnitPath