Google Classroom API访问要求 模拟域中的帐户:服务帐户本身:参考:

问题描述

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

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

  • 该帐户是通过只读域访问权限创建的。
  • 事实成立之后就建立了一个项目。
  • 之后,我添加了该帐户。
  • 然后我在该项目中启用了Classroom API。
  • 我在上面链接站点上将课程范围添加到服务帐户的域范围授权。

我的管理员帐户收到200条完整课程列表的回复。我的服务帐户收到200空响应。如果我授予服务帐户域管理员,则它将返回课程的完整列表。我很乐意在需要时提供经过清理的屏幕截图,但是没有人知道服务帐户需要除域管理员以外的哪些权限才能通过API访问Google教室数据?

解决方法

模拟域中的帐户:

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

this answer中所述,只有域管理员才能访问域中的所有课程。其余用户只能访问他们所属的课程(例如老师,学生等)。

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

服务帐户本身:

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

而且,从技术上讲,服务帐户不是域的一部分,因此不能将其添加到域中的课程中(仅域can be added to a course中的帐户-无论如何,拥有服务会产生什么意义是课程的老师还是学生?)。

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

参考: