查询O365 SharePoint SiteId时,OneNote API会间歇性地返回HTTP 400

时间:2016-02-05 15:03:46

标签: sharepoint-online onenote-api

我的代码调用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-ahttps://domain.com/sites/site-a。 (SharePoint支持在预览中。)" 我不知道这已经预览了(我认为它是GA),但无论如何它并没有解释为什么它间歇性地用于完全相同的输入(相同的URL和不记名令牌)。

它是否只是OneNote API或SharePoint API中的一个错误,它必须在封面下调用?

1 个答案:

答案 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标头,以获取失败的请求,以便我们进一步提供帮助。