使用MS Graph调用OneNote /pages接口返回空数组问题咨询
我之前排查过类似的场景,给你几个方向去试试:
检查权限配置
虽然/me/onenote/notebooks和/sections能正常返回,但/pages可能需要更明确的权限。确认你申请的Delegated权限是Notes.Read或Notes.ReadWrite(个人账号场景),如果是应用权限则需要Notes.Read.All或Notes.ReadWrite.All,并且确保权限已经完成管理员同意(如果是企业账号的话)。指定返回字段或缩小范围
试试直接请求某个分区下的页面,比如调用GET https://graph.microsoft.com/v1.0/me/onenote/sections/{section-id}/pages,如果这个能返回内容,说明全局的/pages可能因为默认过滤或者分页问题没显示。另外可以加上$select参数明确要返回的字段:GET https://graph.microsoft.com/v1.0/me/onenote/pages?$select=id,title,contentUrl,lastModifiedDateTime确认页面的归属范围
如果你访问的笔记本是属于Microsoft 365组、团队或者SharePoint站点的,/me路径是无法访问这些页面的。先调用/me/onenote/notebooks查看返回的笔记本对象,检查parentSiteUrl或owner字段,如果是团队/站点归属,需要切换到对应的路径:- 组场景:
GET https://graph.microsoft.com/v1.0/groups/{group-id}/onenote/pages - 站点场景:
GET https://graph.microsoft.com/v1.0/sites/{site-id}/onenote/pages
- 组场景:
排除工具或缓存问题
如果是用Graph Explorer测试的,试试清空浏览器缓存、切换隐私窗口重新登录;或者用Postman发起请求,带上最新获取的AccessToken,排除工具层面的缓存干扰。检查页面状态
默认情况下,Graph API不会返回已删除到回收站的页面。如果你的页面是被删除状态,可以加上过滤参数:GET https://graph.microsoft.com/v1.0/me/onenote/pages?$filter=isDeleted eq false
内容的提问来源于stack exchange,提问作者Jakub Lizińczyk

