从Google获取不包含任何电子邮件地址和用户名的学生JSON包含值“未知用户”。
{
"courseId":"1234",
"profile":{//No email address
"id":"openId",
"name":{"fullName":"Unknown user"},//Why "Unknown user"
"photoUrl":"correct_url"
},
"userId":"openId"
}
我们无法访问教师的Google课堂帐户,因此我们尝试使用测试帐户重现该问题。它只发生在少数用户身上,对其他所有用户都很好。
我们正在使用Google Classroom的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
}
}
}
}
当学生的电子邮件地址为null时,需要知道这种情况,技术上它不应该为空。
示例学生档案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
答案 0 :(得分:2)
用户是否已被删除?在某些情况下,如果用户被删除,API将返回“用户”,其中包含“未知用户”作为名称(并且没有电子邮件地址)。
答案 1 :(得分:0)
要恢复电子邮件地址,您需要申请特殊的https://www.googleapis.com/auth/classroom.profile.emails
OAuth范围。
答案 2 :(得分:0)
需要知道学生的电子邮件地址可以为空的情况,技术上不应该为空。
当 G-Suite 管理员删除学生帐户时会发生这种情况。这只会删除用户帐户,不会从 Google 课堂中删除用户。这将在该用户所在的教室中留下一个幽灵用户。
幸运的是,G-Suite 允许在 20 天内恢复已删除的用户。如果管理员恢复了此类用户,您将能够在各自的教室中看到这些学生,并且可以将他们从每个教室优雅地移除。
如果删除用户后 20 天过去了,我不确定如何解决此问题。