如果组包含禁用的用户,即使创建呼叫的老师,学生部分为空,创建课堂笔记本也会失败

时间:2019-10-30 09:49:00

标签: onenote-api microsoft-graph-edu

以下是重现该错误的方案:

  • 接受Microsoft Education租户(演示租户就足够了)
  • 使用有效的Office 365许可证和使用位置创建新用户
  • 在Azure Portal中将帐户(设置阻止登录)禁用为true
  • 创建一个组并将该用户添加为成员

这是我们需要的最低要求。组中也可以有其他(已启用)用户,但这不会改变其行为。现在,让我们遵循documentation来创建课堂笔记本:

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"
  }
}

2 个答案:

答案 0 :(得分:1)

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

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

一切都按预期进行。

答案 1 :(得分:0)

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

遇到类似30109的错误时,唯一的解决方法是遍历所有者和成员并删除所有禁用的帐户,或者解析UPN的message属性({{1} }。我知道这不理想。