使用Access Token调用SharePoint API获取文件列表时遇401错误求助
核心问题分析
你遇到的401错误(ID3035)和路径混淆直接相关:AAA是文档库,并非普通文件夹,SharePoint的文档库本质是特殊列表,不能用常规文件夹的路径逻辑访问;同时权限配置或token范围也可能是错误诱因。
分步解决方法
1. 确认正确的服务器相对路径(Server Relative Url)
要访问AAA文档库下的Monthly reports文件夹,需先明确完整的服务器相对路径:
- 打开SharePoint站点,进入
Monthly reports文件夹,查看浏览器地址栏(示例:https://yourtenant.sharepoint.com/sites/YourSite/AAA/Monthly%20reports/Forms/AllItems.aspx) - 提取出服务器相对路径:
/sites/YourSite/AAA/Monthly reports
2. 验证Azure AD应用的权限配置
由于你使用client_id+client_secret的客户端凭证流,必须确保:
- 在Azure门户的应用注册中,添加SharePoint Online的应用权限(不是委派权限),推荐
Sites.Read.All(若仅需访问特定站点,可使用更精细的Sites.Selected) - 该权限已获得管理员的同意授权(客户端凭证流必须由管理员审批权限)
3. 正确调用GetFolderByServerRelativeUrl接口
使用规范的API端点和路径:
- 请求URL示例:
https://yourtenant.sharepoint.com/sites/YourSite/_api/web/GetFolderByServerRelativeUrl('/sites/YourSite/AAA/Monthly reports') - 请求头必须包含:
Authorization: Bearer <你的access_token>Accept: application/json;odata=nometadata(简化返回格式)
4. 替代方案:通过文档库列表API访问
若文件夹路径仍有问题,可直接通过文档库的列表API获取内容:
- 获取
Monthly reports文件夹下的所有文件:https://yourtenant.sharepoint.com/sites/YourSite/_api/web/lists/getbytitle('AAA')/RootFolder/Folders/getbyurl('Monthly reports')/Files - 获取文件夹下的子文件夹:
https://yourtenant.sharepoint.com/sites/YourSite/_api/web/lists/getbytitle('AAA')/RootFolder/Folders/getbyurl('Monthly reports')/Folders
ID3035错误的常见诱因
- Token的受众(Audience)与API端点不匹配:确保token是针对目标SharePoint站点(而非根站点)生成的
- 服务器相对路径错误:路径拼写错误、缺少站点前缀(
/sites/YourSite) - 权限未生效:管理员同意权限后,需等待数分钟让权限同步
内容的提问来源于stack exchange,提问作者Dina Kleper
相关产品推荐
相关产品推荐

