Ошибка удаления студента из учебника onenote с помощью API - PullRequest
0 голосов
/ 26 января 2020

Я пытаюсь удалить ученика из книги заметок OneNote с помощью API-интерфейса Microsoft 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-teacher

Нет вызова 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() )

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

Кто-нибудь работал с этим API? Это работает? Что я делаю не так?

1 Ответ

0 голосов
/ 27 января 2020

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

В моем случае по какой-то причине принцип «Имя пользователя» выглядит примерно так:

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

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

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

...