学生提交返回的奇怪 UserId

Weird UserId Returned By Student Submission

我一直在尝试获取提交对简短回答作业的回复的用户的电子邮件。在我使用 Google 课堂 API 的所有其他经历中,“userId”参数一直是学生的电子邮件地址,但是当我在 StudentSubmission 对象上调用 getUserId 时,我得到一串奇怪的数字。我如何获得与提交的回复关联的电子邮件?

这是我的参考代码:

ListStudentSubmissionsResponse submissionResponse = service.courses().courseWork().studentSubmissions().list(courseId, assignmentId).execute();
List<StudentSubmission> submissions = submissionResponse.getStudentSubmissions();
for (StudentSubmission sub : submissions)
{
    System.out.println(sub.getId() + "\t" + sub.getUserId() + "\t" + sub.getState());
}

这是我得到的回复: Cg4I2vWq_8IDEIWck4DDAw 108878473486432178050 CREATED

有人知道这是怎么回事吗?

有关于此的已发布文档API...无需在此询问:https://developers.google.com/classroom/reference/rest

更具体地说,有 userProfile APIs 区分“id”和“emailAddress”。

https://developers.google.com/classroom/reference/rest/v1/userProfiles

话虽如此,根据 JSON 架构并没有任何保证,它只是一个“字符串”类型……至于值可能是什么。

“emailAddress”应该就是那个,但“id”可以是本地系统用来识别主体的任何东西——这几乎肯定不会是电子邮件地址。它将成为正在使用的任何主要管理系统的一些全局标识符。

不要不阅读文档:retrieve_student_responses

Students are identified by the unique ID or email address of the user, as returned by the Google Admin SDK.

所以显然不能保证它会 return 电子邮件..

如果您阅读文档,您可以找到如何正确检索学生 ID 的电子邮件:retrieve_a_users_profile

To retrieve the abridged profile, including ID and name, for a user, call userProfiles.get() with the user's ID, email, or "me" for the requesting user.

To retrieve the emailAddress field, you must include the classroom.profile.emails scope.