【问题标题】:Google Classroom API Access requirementsGoogle Classroom API 访问要求
【发布时间】:2020-08-28 22:36:26
【问题描述】:

我正在使用这个网站进行测试: https://developers.google.com/classroom/reference/rest/v1/courses/list

我有一个带有服务帐户的项目设置:

  • 创建的帐户具有只读域访问权限。
  • 事后建立了一个项目。
  • 然后我在事后添加了帐户。
  • 然后我在该项目中启用了 Classroom API。
  • 我将上面链接的站点上的课程范围添加到服务帐户的域范围委派中。

我的管理员帐户收到 200 条响应,其中包含完整的课程列表。我的服务帐户收到空的 200 响应。如果我授予服务帐户域管理员权限,它会返回完整的课程列表。如果需要,我很乐意提供经过净化的屏幕截图,但有谁知道服务帐户需要哪些权限才能通过 API 访问 Google 课堂数据?

【问题讨论】:

  • 当您说 If I grant the service account domain admin it returns a full list of courses 时,您的意思是 SA 冒充域管理员? SA 可以访问模拟帐户可以访问的相同课程:例如,模拟帐户是教师或学生的课程。如果 SA 不冒充任何人,它只会返回它有权访问的课程(我认为永远不会,因为 SA 不能添加到课程中,也不能创建课程,AFAIK)。要检索完整列表,SA 应模拟域管理员。
  • 以上评论能回答你的问题吗?如果是这种情况,我会考虑发布一个扩展此解释的答案。
  • 那种答案。有没有办法在没有域管理员的情况下获得可以读取整个环境的 SA 设置?根据你所说的,听起来不是,但我想确定一下。
  • 嗨!我发布了一个答案,希望您的问题得到澄清。

标签: google-api google-workspace google-classroom google-admin-settings-api


【解决方案1】:

冒充域中的帐户:

已被授予域范围权限的服务帐户可以访问与其所模拟的帐户相同的数据。

this answer 中所述,只有域管理员可以访问域中的所有课程。其余用户只能访问他们所属的课程(作为教师、学生等)。

因此服务帐户检索域中所有课程的唯一方法是模拟域管理员(或为域中的每个课程添加另一个帐户)

服务帐号本身:

另一方面,未授予域范围权限或未使用此权限模拟另一个帐户的服务帐户将只能访问它已添加到的课程。

由于服务帐户在技术上不是域的一部分,因此不能将其添加到域中的课程中(仅域内的帐户 can be added to a course - 无论如何,将服务帐户作为是老师还是学生?)。

因此,对 courses.list 的调用无法返回域中的任何课程:它将返回服务帐户可能自行创建的任何课程,这些课程不属于域。

参考:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多