Google Classroom API会返回没有电子邮件地址的学生档案JSON

时间:2016-04-05 06:58:32

标签: google-classroom

从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

3 个答案:

答案 0 :(得分:2)

用户是否已被删除?在某些情况下,如果用户被删除,API将返回“用户”,其中包含“未知用户”作为名称(并且没有电子邮件地址)。

答案 1 :(得分:0)

要恢复电子邮件地址,您需要申请特殊的https://www.googleapis.com/auth/classroom.profile.emails OAuth范围。

答案 2 :(得分:0)

<块引用>

需要知道学生的电子邮件地址可以为空的情况,技术上不应该为空。

当 G-Suite 管理员删除学生帐户时会发生这种情况。这只会删除用户帐户,不会从 Google 课堂中删除用户。这将在该用户所在的教室中留下一个幽灵用户。

幸运的是,G-Suite 允许在 20 天内恢复已删除的用户。如果管理员恢复了此类用户,您将能够在各自的教室中看到这些学生,并且可以将他们从每个教室优雅地移除。

如果删除用户后 20 天过去了,我不确定如何解决此问题。