1

从 Google 获取不包含任何电子邮件地址和用户名的学生 JSON 包含值“未知用户”。

 {
     "courseId":"1234",
     "profile":{//No email address
             "id":"openId",
             "name":{"fullName":"Unknown user"},//Why "Unknown user"
             "photoUrl":"correct_url"
     },
     "userId":"openId"
}

我们无法访问教师的 Google Classroom 帐户,因此我们正在尝试使用测试帐户重现该问题。它只发生在少数用户身上,其他所有用户都可以正常工作。

我们正在使用 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
            }
        }
    }
}

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

示例学生资料 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。照片 https://www.googleapis.com/auth/classroom.rosters.readonly

4

3 回答 3

3

为了返回电子邮件地址,您需要请求特殊的https://www.googleapis.com/auth/classroom.profile.emailsOAuth 范围。

于 2016-04-05T09:00:08.700 回答
1

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

于 2016-04-05T14:01:15.987 回答
0

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

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

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

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

于 2021-06-05T03:37:24.750 回答