Ошибка при удалении учащегося из записной книжки onenote с помощью API

Я пытаюсь удалить учащегося из учебника OneNote с помощью API-интерфейса microsoft onenote, но получаю следующую ошибку.

{'error': {'code': '19999', 'message': 'Произошла ошибка, API не может предоставить дополнительную информацию во время запроса.', '@ api.url': 'https://aka.ms/onenote-errors'}}

Я использую команду REST API, описанную здесь https://docs.microsoft.com/en-us/previous-versions/office/office-365-api/how-to/onenote-classnotebook

Не существует вызова REST графического API, 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() )

Я знаю, что идентификаторы верны, потому что я могу использовать те же самые, чтобы добавить ученика в классную записную книжку без каких-либо проблем.

У кого-нибудь заработал этот API? Это работает? Что я делаю неправильно?

1 ответ

Я нашел проблему. Я использовал PrincipUserName, потому что это то, что возвращал предыдущий вызов API для получения списка студентов в записной книжке для занятий.

В моем случае по какой-то причине принцип UserName выглядит как

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

который имеет специальные символы, поэтому не может быть частью URL-адреса, вызываемого REST API.

Решение состоит в том, чтобы убрать первую часть принципа UserName и использовать только адрес электронной почты, например name@org.co.uk, тогда это сработает.

Другие вопросы по тегам