OneNote API - получение периодических ошибок 401 - PullRequest
0 голосов
/ 08 октября 2019

У меня есть приложение, которое годами работает с OneNote, но в последнее время пользователи жалуются на периодически возникающие проблемы при сохранении новых страниц. После некоторой отладки мы обнаружили, что API OneNote возвращает 401 несанкционированный ответ со следующим телом:

{
   "error":{
      "code":"40001",
      "message":"The request does not contain a valid authentication token.",
      "@api.url":"https://aka.ms/onenote-errors#C40001"
   }
}

Конечно, все наши запросы отправляются с правильным заголовком Authorization: Bearer J...X. Если мы повторим неудачный запрос несколько раз, он в конечном итоге пройдет правильно.

Мы используем следующую конечную точку OAuth: https://login.live.com/oauth20_authorize.srf

Это наши области действия: wl.basic, wl.signin, wl.offline_access, office.onenote_create, office.onenote_update_by_app

Вот пример запроса для получения записных книжек пользователя:

1-я попытка:

[~]$ curl -XGET -H 'Authorization: Bearer Ew...I=' "https://www.onenote.com/api/v1.0/notebooks?\$select=id,name,userRole,isDefault&\$expand=sections,sectionGroups"
{
  "error": {
    "code": "40001",
    "message": "The request does not contain a valid authentication token.",
    "@api.url": "https://aka.ms/onenote-errors#C40001"
  }
}

2-я попытка:

[~]$ curl -XGET -H 'Authorization: Bearer Ew...I=' "https://www.onenote.com/api/v1.0/notebooks?\$select=id,name,userRole,isDefault&\$expand=sections,sectionGroups"
{
  "@odata.context":"https://www.onenote.com/api/v1.0/$metadata#me/notes/notebooks(id,name,userRole,isDefault,sections,sectionGroups)","value":[
    {
      "id":"0-123123E123123123!831","name":"Jacket's Notebook","userRole":"Owner","isDefault":true,"sections@odata.context":"https://www.onenote.com/api/v1.0/$metadata#me/notes/notebooks('0-123123E123123123%21831')/sections","sections":[
        {
          "id":"0-123123E123123123!833","self":"https://www.onenote.com/api/v1.0/me/notes/sections/0-123123E123123123!833","createdTime":"2019-10-08T08:42:38.043Z","name":"Quick Notes","createdBy":"Jacket","lastModifiedBy":"Jacket","lastModifiedTime":"2019-10-08T09:59:26.173Z","isDefault":true,"pagesUrl":"https://www.onenote.com/api/v1.0/me/notes/sections/0-123123E123123123!833/pages","size":0
        }
      ],"sectionGroups@odata.context":"https://www.onenote.com/api/v1.0/$metadata#me/notes/notebooks('0-123123E123123123%21831')/sectionGroups","sectionGroups":[

      ]
    }
  ]
}

Без каких-либо изменений в запросе, мыполучить два разных ответа. Это похоже на ограничение скорости, хотя мы не делаем почти столько же запросов, чтобы вызвать что-то подобное, и ошибка ясно говорит о том, что это проблема с токеном. Но токен такой же и не обновляется между запросами.

Я застрял сейчас. Пожалуйста, помогите!

...