Мой код вызывает API OneNote для преобразования URL-адреса сайта SharePoint Online в SiteCollectionId и SiteId. Мы получаем токен-носитель, устанавливаем HTTP-заголовок аутентификации и отправляем GET-запрос на:
https://www.onenote.com/api/v1.0/myorganization/sitecollections/FromUrl(url='https://mytenantxyz.sharepoint.com/sites/copynotesite')
Примерно неделю он возвращал ожидаемый ответ, похожий на:
{
"@odata.context": "https://www.onenote.com:576/api/v1.0/$metadata#Microsoft.OneNote.Api.SiteMetadata",
"siteCollectionId": "111e03ac-468c-4a28-9aab-543098ef49bb",
"siteId": "555d72a0-f82f-4e4c-ae8a-17ef0ea04f32"
}
Однако сегодня он решил вернуть следующее примерно в 9 из 10 запросов:
{
error": {
"code" : “20158”,
"message": "Unable to get SiteMetadta for the url specified in the request.",
"@api.url": "http://aka.ms/onenote-errors#C20158"
}
}
В документации Microsoft (ссылка) ошибка 20158 объясняется следующим образом:
"Невозможно получить метаданные для URL-адреса сайта, указанного в запросе. Проверьте формат предоставленного URL-адреса. Поддерживаемые форматы включают https://domain.sharepoint.com/site-a и https://domain.com/sites/site-a. (Поддержка SharePoint находится в предварительной версии.)" Я не знал, что это была предварительная версия (я думал, что это GA), но в любом случае это не так. не объясняет, почему он периодически работает для одного и того же ввода (тот же URL-адрес и токен носителя).
Может быть, это просто ошибка в API OneNote или API SharePoint, которую он должен вызывать скрытно?