若组中包含禁用用户,则创建班级笔记本失败,即使创建呼叫的教师、学生部分为空



以下是重现错误的场景:

  • 找一个Microsoft教育租户(演示租户就足够了(
  • 创建具有有效office 365许可证和使用位置的新用户
  • 在Azure门户中将帐户(设置阻止登录(禁用为true
  • 创建组并将此用户添加为成员

这是我们需要的最低方案。组中也可以有其他(启用的(用户,但这不会改变行为。现在,让我们按照文档创建一个类笔记本:

POST https://www.onenote.com/api/v1.0/myOrganization/groups/{groupId}/notes/classNotebooks/?omkt=de-de
{
"name": "Class notebook of my group",
"teachers": [],
"students": [],
"studentSections": [],
"hasTeacherOnlySectionGroup": true
}

因此,统一组只有一个成员的帐户被禁用,但该特定用户不会添加到创建请求的教师或学生部分。然而,出现以下错误消息:

System.Net.Http.HttpRequestException: Response status code does not indicate success: 404 (NotFound).
{
"error": {
"code": "30109",
"message": "The following users are invalid: Message: Der angegebene Benutzer disabled.user@mydomain.com wurde nicht gefunden., ServerErrorCode: -2146232832, ServerErrorTypeName: Microsoft.SharePoint.SPException",
"@api.url": "https://aka.ms/onenote-errors#C30109"
}
}

在得到Marc的澄清后,我们目前的程序如下:

  • 获取所有禁用用户的列表
  • 启用所有这些
  • 等待一分钟(因为Graph需要一些时间来传播此信息(
  • 通过OneNote API创建课程笔记本
  • 再次禁用初始列表中的所有用户

有了这个,一切都按预期进行。

错误消息不清楚,但TeachersOwnersStudents映射到Members。因此,即使您没有在students集合中指定此用户,他们也是组的成员,因此他们被视为students集合的一部分。

当遇到类似这样的30109错误时,唯一的解决方法是迭代所有者和成员并删除任何禁用的帐户,或者解析UPN(disabled.user@mydomain.com(的message属性。据我所知,这并不理想。

最新更新