【问题标题】:Weird UserId Returned By Student Submission学生提交返回的奇怪用户 ID
【发布时间】:2020-07-06 15:31:33
【问题描述】:

我一直在尝试获取提交简答作业回复的用户的电子邮件。在我使用 Google Classroom 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

有人知道这里发生了什么吗?

【问题讨论】:

  • 请勿阅读 the docs:“学生由 Google Admin SDK 返回的用户的唯一 ID 或电子邮件地址标识。”所以显然不能保证它会是电子邮件

标签: java google-classroom userid


【解决方案1】:

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

更具体地说,有一些 userProfile API 可以区分“id”和“emailAddress”。

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

话虽如此,根据 JSON 模式并不能保证,它只是一个“字符串”类型......至于值可能是什么。

“emailAddress”应该就是这样,但“id”可以是本地系统用来识别主体的任何内容——这几乎肯定不会是电子邮件地址。相反,它将是正在使用的任何主体管理系统的某个全局标识符。

【讨论】:

  • 我很了解这个 api。根据我的经验,用户 ID 和电子邮件是可以互换的,我只是对为什么没有对单独的 userProfiles API 的任何引用感到困惑。
  • 公平点 - 更多的是关于不阅读文档的其他答案的评论。很高兴它成功了,并且似乎有单独的电子邮件和用户 ID 字段;分别。希望这能回答问题或另一篇文章。
【解决方案2】:

不要阅读文档:retrieve_student_responses

学生由用户的唯一 ID电子邮件地址标识,由 Google Admin SDK 返回。

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

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

要检索用户的简化配置文件(包括 ID 和姓名),请致电userProfiles.get() 并提供请求用户的用户 ID、电子邮件或“我”。

要检索 emailAddress 字段,您必须包含 classroom.profile.emails 范围。

【讨论】:

  • 感谢您的帮助!当我阅读文档时,我一定看过了。
猜你喜欢
  • 2016-02-04
  • 1970-01-01
  • 2019-03-17
  • 1970-01-01
  • 2015-04-12
  • 1970-01-01
  • 2014-06-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多