我的代码调用OneNote API将SharePoint Online站点URL解析为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个请求中返回以下内容:
{
error": {
"code" : “20158”,
"message": "Unable to get SiteMetadta for the url specified in the request.",
"@api.url": "http://aka.ms/onenote-errors#C20158"
}
}
Microsoft文档(link)将错误20158解释为:
" 无法获取请求中指定的站点URL的元数据。检查提供的URL的格式。支持的格式包括https://domain.sharepoint.com/site-a和https://domain.com/sites/site-a。 (SharePoint支持在预览中。)"
我不知道这已经预览了(我认为它是GA),但无论如何它并没有解释为什么它间歇性地用于完全相同的输入(相同的URL和不记名令牌)。
它是否只是OneNote API或SharePoint API中的一个错误,它必须在封面下调用?
答案 0 :(得分:1)
请参阅博客 - http://blogs.msdn.com/b/onenotedev/archive/2015/06/11/and-sharepoint-makes-three.aspx
我们添加了FromUrl方法,因此您可以传入绝对站点URL并获取网站集和网站ID。您应该仅在需要时进行此调用,然后存储值(网站集和网站ID)以供将来用于对OneNote API的请求。
然而,这并不能解决间歇问题。请与我们分享X-correlationId标头,以获取失败的请求,以便我们进一步提供帮助。