0

我正在尝试使用 microsoft onenote API 从 OneNote 课堂笔记本中删除学生,但出现以下错误。

{'error': {'code': '19999', 'message': '发生故障,API 无法在请求时共享更多信息。', '@api.url': ' https:// aka.ms/onenote-errors#C19999 '}}

我正在使用此处记录的 REST API 命令https://docs.microsoft.com/en-us/previous-versions/office/office-365-api/how-to/onenote-classnotebook#remove-students-and-teachers

没有图形 API REST 调用,MS 没有在图形中提供任何课堂笔记本调用,当前图形文档指向上述处理课堂笔记本的文档。

这是我的python代码

onenote_url = 'https://www.onenote.com/api/v1.0/me/notes'

def remove_student_from_notebook( token , studentid , notebookid ):
  client = OAuth2Session(token=token)

  headers = { 'Authorization': 'Bearer, {}'.format(token), 'Accept': 'application/json' }
  url = '{0}/classNotebooks/{1}/students/{2}'.format(onenote_url,notebookid,studentid)
  events = client.delete(url, headers=headers )
  print( events.json() )

我知道 ID 是正确的,因为我可以使用完全相同的 ID 将学生添加到课堂笔记本中而不会出现任何问题。

有没有人让这个 API 工作?它有效吗?我究竟做错了什么?

4

1 回答 1

0

我发现了问题。我使用了 principalUserName,因为它是以前的 API 调用返回的,用于获取课堂笔记本中的学生列表。

在我的情况下,由于某种原因,principalUserName 类似于

'i:0#.f|会员|name@org.co.uk'

它具有特殊字符,因此不能构成 REST API 调用的 URL 的一部分。

解决方案是去掉principalUserName的第一部分,只使用电子邮件地址,即name@org.co.uk,然后就可以了。

于 2020-01-27T13:20:29.390 回答