Google 教室 API returns 学生个人资料 JSON 没有电子邮件地址
Google Classroom API returns student profile JSON having no email address
从 Google 获取学生 JSON,不包含任何电子邮件地址,用户名包含值 "Unknown User"。
{
"courseId":"1234",
"profile":{//No email address
"id":"openId",
"name":{"fullName":"Unknown user"},//Why "Unknown user"
"photoUrl":"correct_url"
},
"userId":"openId"
}
我们无法访问教师的 Google 课堂帐户,因此我们正在尝试使用测试帐户重现该问题。它只发生在少数用户身上,对所有其他人都很好。
我们正在使用 Google 教室的 Java API。
我们使用的示例代码:
Classroom service = getGoogleClassRoomService(accessToken);
if(service != null) {
ListStudentsResponse studentsResponse = service.courses().students().list(courseId).execute();
List<Student> students = studentsResponse.getStudents();
if(students != null) {
for (Student student : students) {
if (student.getProfile().getEmailAddress() != null) {
//Processing student data
}
}
}
}
需要了解学生的电子邮件地址可以为空的情况,从技术上讲,它不应该为空。
示例学生档案 JSON 参考:https://developers.google.com/classroom/reference/rest/v1/userProfiles#resource-userprofile
验证用户时请求的范围:
https://www.googleapis.com/auth/classroom.courses.readonly https://www.googleapis.com/auth/classroom.profile.emails https://www.googleapis.com/auth/classroom.profile.photos https://www.googleapis.com/auth/classroom.rosters.readonly
为了返回电子邮件地址,您需要请求特殊的 https://www.googleapis.com/auth/classroom.profile.emails
OAuth 范围。
该用户是否已被删除?在某些情况下,如果用户已被删除,API 将 return 一个 "user",其中 "Unknown user" 作为名称(没有电子邮件地址)。
Need to know the scenario when email address can be null for student, technically it should not be null.
当 G-Suite 管理员删除学生帐户时会发生这种情况。这只会删除用户帐户,不会将用户从 Google 个教室中删除。这将在该用户所在的那些教室中留下幽灵用户。
幸运的是,G-Suite 允许在 20 天内恢复已删除的用户。如果管理员恢复了此类用户,您将能够在各自的教室中看到这些学生,并可以优雅地将他们从每个教室中移除。
如果用户删除后 20 天过去了,我不确定如何解决此问题。
从 Google 获取学生 JSON,不包含任何电子邮件地址,用户名包含值 "Unknown User"。
{
"courseId":"1234",
"profile":{//No email address
"id":"openId",
"name":{"fullName":"Unknown user"},//Why "Unknown user"
"photoUrl":"correct_url"
},
"userId":"openId"
}
我们无法访问教师的 Google 课堂帐户,因此我们正在尝试使用测试帐户重现该问题。它只发生在少数用户身上,对所有其他人都很好。
我们正在使用 Google 教室的 Java API。
我们使用的示例代码:
Classroom service = getGoogleClassRoomService(accessToken);
if(service != null) {
ListStudentsResponse studentsResponse = service.courses().students().list(courseId).execute();
List<Student> students = studentsResponse.getStudents();
if(students != null) {
for (Student student : students) {
if (student.getProfile().getEmailAddress() != null) {
//Processing student data
}
}
}
}
需要了解学生的电子邮件地址可以为空的情况,从技术上讲,它不应该为空。
示例学生档案 JSON 参考:https://developers.google.com/classroom/reference/rest/v1/userProfiles#resource-userprofile
验证用户时请求的范围:
https://www.googleapis.com/auth/classroom.courses.readonly https://www.googleapis.com/auth/classroom.profile.emails https://www.googleapis.com/auth/classroom.profile.photos https://www.googleapis.com/auth/classroom.rosters.readonly
为了返回电子邮件地址,您需要请求特殊的 https://www.googleapis.com/auth/classroom.profile.emails
OAuth 范围。
该用户是否已被删除?在某些情况下,如果用户已被删除,API 将 return 一个 "user",其中 "Unknown user" 作为名称(没有电子邮件地址)。
Need to know the scenario when email address can be null for student, technically it should not be null.
当 G-Suite 管理员删除学生帐户时会发生这种情况。这只会删除用户帐户,不会将用户从 Google 个教室中删除。这将在该用户所在的那些教室中留下幽灵用户。
幸运的是,G-Suite 允许在 20 天内恢复已删除的用户。如果管理员恢复了此类用户,您将能够在各自的教室中看到这些学生,并可以优雅地将他们从每个教室中移除。
如果用户删除后 20 天过去了,我不确定如何解决此问题。