Guardian 资源代表可以接收学生课程和作业相关信息的用户,例如家长。监护人(通常不是学生的 Google 课堂网域的成员)必须使用其电子邮件地址受邀成为监护人。
此邀请会创建一个状态为 PENDING
的 GuardianInvitation 资源。然后,用户会收到一封电子邮件,提示其接受邀请。如果该电子邮件地址未与 Google 帐号关联,系统会提示用户先创建一个 Google 帐号,然后再接受邀请。
虽然邀请的状态为 PENDING
,但用户可以接受邀请,这会创建一个 Guardian 资源,并将 GuardianInvitation 标记为 COMPLETED
状态。如果邀请过期,或者如果获授权的用户取消了邀请(例如,使用 PatchGuardianInvitation
方法),则该邀请也可能会变为 COMPLETED
。监护人、Google 课堂教师或管理员也可能会使用 Google 课堂界面或 DeleteGuardian
方法取消监护人关系。
哪些人可以管理监护人
下表介绍了可对监护人执行的操作(根据当前经过身份验证的用户类型):
作用域
您可以通过以下三种范围管理监护人:
- 使用 https://www.googleapis.com/auth/classroom.guardianlinks.me.readonly,您可以查看用户自己的监护人。
- 使用 https://www.googleapis.com/auth/classroom.guardianlinks.students.readonly,您可以查看用户讲授或管理的学生的监护人和监护人邀请。
- 通过 https://www.googleapis.com/auth/classroom.guardianlinks.students,您可以查看和修改用户讲授或管理的学生的监护人和监护人邀请。
常用操作
本部分将介绍您可能需要使用 GoogleClassroom API 执行的一些常见监护人操作。
创建监护人邀请
以下示例展示了如何使用 userProfiles.guardianInvitations.create()
方法创建监护人邀请:
Java
Python
guardianInvitation = {
'invitedEmailAddress': 'guardian@gmail.com',
}
guardianInvitation = service.userProfiles().guardianInvitations().create(
studentId='student@mydomain.edu',
body=guardianInvitation).execute()
print("Invitation created with id: {0}".format(guardianInvitation.get('invitationId')))
结果将包含由服务器分配的标识符,该标识符可用于引用 GuardianInvitation。
取消监护人邀请
如需取消邀请,请调用 userProfiles.guardianInvitations.patch()
方法,将邀请状态从 PENDING
修改为 COMPLETE
。请注意,这是目前移除邀请的唯一方式。
Java
Python
guardian_invite = {
'state': 'COMPLETE'
}
guardianInvitation = service.userProfiles().guardianInvitations().patch(
studentId='student@mydomain.edu',
invitationId=1234, # Replace with the invitation ID of the invitation you want to cancel
updateMask='state',
body=guardianInvitation).execute()
列出特定学生的邀请
您可以使用 userProfiles.guardianInvitations.list()
方法获取针对特定学生发送的所有邀请的列表:
Java
Python
guardian_invites = []
page_token = None
while True:
response = service.userProfiles().guardianInvitations().list(
studentId='student@mydomain.edu').execute()
guardian_invites.extend(response.get('guardian_invites', []))
page_token = response.get('nextPageToken', None)
if not page_token:
break
if not courses:
print('No guardians invited for this {0}.'.format(response.get('studentId')))
else:
print('Guardian Invite:')
for guardian in guardian_invites:
print('An invite was sent to '.format(guardian.get('id'),
guardian.get('guardianId')))
默认情况下,仅返回 PENDING
个邀请。作为网域管理员,您还可以通过提供 state 参数来检索处于 COMPLETED
状态的邀请。
列出活跃监护人
如果要确定哪些用户是特定学生的活跃监护人,您可以使用 userProfiles.guardians.list()
方法。活跃监护人是指已接受电子邮件邀请的监护人。
Java
Python
guardian_invites = []
page_token = None
while True:
response = service.userProfiles().guardians().list(studentId='student@mydomain.edu').execute()
guardian_invites.extend(response.get('guardian_invites', []))
page_token = response.get('nextPageToken', None)
if not page_token:
break
if not courses:
print('No guardians invited for this {0}.'.format(response.get('studentId')))
else:
print('Guardian Invite:')
for guardian in guardian_invites:
print('An invite was sent to '.format(guardian.get('id'),
guardian.get('guardianId')))
移除监护人
您还可以使用 userProfiles.guardians.delete()
方法从学生中移除监护人:
Java
Python
service.userProfiles().guardians().delete(studentId='student@mydomain.edu',
guardianId='guardian@gmail.com').execute()