使用API​​从onenote课堂笔记本中删除学生时出错

时间:2020-01-25 23:36:08

标签: onenote-api microsoft-graph-onenote

我正在尝试使用Microsoft onenote API从OneNote类笔记书中删除一名学生,但是出现以下错误。

{'错误':{'代码':'19999','消息':'发生故障,API在请求时无法共享更多信息。','@ api.url':'{ {3}}'}}

我正在使用此处https://aka.ms/onenote-errors#C19999

中记录的REST API命令

没有图形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吗? 它行得通吗? 我在做什么错了?

1 个答案:

答案 0 :(得分:0)

我发现了问题。我之所以使用PrincipleUserName,是因为它是前一个API调用返回的内容,用于获取班级笔记本中的学生列表。

就我而言,由于某种原因,principalUserName类似于

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

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

解决方案是删除principalUserName的第一部分,并且仅使用电子邮件地址,即name@org.co.uk,然后它可以正常工作。