【问题标题】:I would like to know how a non-admin account can use the Admin SDK我想知道非管理员帐户如何使用 Admin SDK
【发布时间】:2021-01-04 08:19:42
【问题描述】:

对不起,如果我的英语很奇怪。

我想知道非管理员帐户如何使用 Admin SDK。 如果您有任何建议,请告诉我。

我正在使用 Google 应用脚本为一所小学开发插件。 我想通过学生、老师、年级等来限制 API。所以我需要获取组织信息。

还有几个类似的问题,显然不可能正常尝试。

使用 Admin SDK 时,Google 会向用户显示接受确认屏幕。 一旦用户同意,谷歌就会为应用程序提供一个短期有效的访问令牌。我在想我可以通过使用该访问令牌来做到这一点。从安全角度来看,这种方法是否危险?


我很抱歉没有解释。

我目前正在为一所小学开发一个谷歌幻灯片插件。 它应该在侧边栏中显示一个使用 vuejs 制作的 SPA,并让您对其进行操作。

例如,我们可以预先管理一个可以使用该应用程序的组织白名单,不允许与白名单不匹配的组织使用它。

如果是学校单位管理的组织,可以按域进行访问控制,但是在某些地区,组织是城市管理的,所以不能实现学校单位的访问控制...

另外。如果我们匹配白名单,我们希望执行以下操作。

  • 教师和学生可以使用的功能是 不同。

  • 这些按钮可以根据学生的年级水平进行更改 学生。

  • 在幻灯片上自动输入学生姓名和班级名称。

使用组织结构来管理学校和学生。 (https://support.google.com/a/answer/4352075?ref_topic=4390186&hl=en)

我们认为我们可以通过使用 Admin SDK 获取组织信息来实现这一目标

【问题讨论】:

  • 首先,我需要您更详细地解释您想要做什么以及上下文。你的主要目标是什么?您希望对某些用户应用哪些限制?您如何通过用户所属的组织单位来区分用户?有了这些信息,我可以理解并以适当的方式帮助您。
  • 我很抱歉没有解释。添加信息。

标签: google-admin-sdk


【解决方案1】:

回答

正如 Google 在文档中所说,不能将 Admin SDK 与非管理员帐户一起使用:此 API 使 Google Workspace 域的管理员(包括转销商)能够管理设备、群组、用户、及其域中的其他实体。

但是,有两种解决方法可以解决您的问题,但您需要使用管理员帐户来配置方案。

初步方法

  • 使用类Session和方法getActiveUsergetEmail获取运行应用程序的用户:var email = Session.getActiveUser().getEmail();
  • 获取每个用户所属的organizational unit。使用此信息,您将能够过滤用户并在加载项中显示不同的选项。主要问题是你需要使用AdminDirectory.Users.get(userEmail)来获取organizational unit,并且需要如下授权范围:https://www.googleapis.com/auth/admin.directory.user.readonly

解决方案 1

  • 创建一个Spreadsheet,包含所有将要使用该插件的用户及其organizational unit
  • 使用List all users 获取域中的所有用户,并将每封电子邮件写入第一列。
  • 使用AdminDirectory.Users.get(email).orgUnitPath获取organizational unit并将其写入下一列
  • 最后,当用户使用插件时,在Spreadsheet中搜索活跃用户(Session.getActiveUser().getEmail())的email,取行号,得到第二列organizational unit的值.

解决方案 2

  • 创建一个custom admin role 并将其分配给每个将要使用该插件的用户。 您必须以超级管理员身份登录才能执行此任务。 您可以通过here 进行操作并选择Users -> Read
  • 为每个用户分配新角色creating a role assignment
  • 终于,用户可以使用var organization = AdminDirectory.Users.get(email).orgUnitPath

【讨论】:

  • 感谢您给我一个具体的方法来做到这一点。它非常有帮助。我想我会尝试使用解决方案 2 自定义角色。但是有一个问题。似乎我最多只能为一个自定义角色添加 20 个用户。是否也有解决方法?
  • 你一次只能做20个作业,但是你可以重复这个操作任意多次。您还可以通过列出域的所有用户并创建角色分配来自动化该过程。
  • 如果可以的话,出于文档目的,如果这对您有帮助,请接受答案 (✓) - 它可以帮助其他未来遇到相同问题的人找到解决方案 :)
猜你喜欢
  • 2014-09-11
  • 2019-07-18
  • 2014-08-13
  • 1970-01-01
  • 1970-01-01
  • 2021-01-22
  • 2021-12-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多