You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Office365-REST-Python-Client下载SharePoint文件遇401未授权错误求助

解决Office365-REST-Python-Client访问SharePoint时的401未授权错误

问题详情

office365.runtime.client_request_exception.ClientRequestException: (None, None, "401 Client Error: Unauthorized for url: https://domain.sharepoint.com/sites/test/_api/Web/getFileByServerRelativePath(DecodedUrl='%2Fsites%2Ftest%2FShared%20Documents%2FSample_Compliance_content.pdf')?$select=ServerRelativePath,Id")

已完成的前置操作:

  • 注册Microsoft 365开发者计划
  • 在SharePoint创建站点并上传目标文档
  • 尝试使用Office365-REST-Python-Client下载文档
  • 按照官方文档完成授权配置,步骤为:登录Azure门户→进入Azure Active Directory→应用注册→选择对应应用→获取客户端ID→在「证书和密码」页获取/创建客户端密钥

代码相关情况:

  • 使用ClientCredential传入客户端ID和客户端密钥(非密钥ID),结合ClientContext发起请求
  • 目标为下载SharePoint站点中的Sample_Compliance_content.pdf文件
  • 执行时触发上述401未授权错误

排查与修复方案

1. 检查应用权限配置

确保Azure应用注册中已添加正确的SharePoint应用权限并完成管理员同意:

  • 进入应用注册的「API权限」页面
  • 点击「添加权限」,选择「SharePoint」或「Microsoft Graph」
  • 选择应用权限(而非委托权限),按需选择Sites.Read.All(只读需求)或Sites.FullControl.All(读写需求),遵循最小权限原则
  • 点击「授予管理员同意」(需全局管理员权限)

2. 验证客户端密钥有效性

  • 确认代码中使用的是客户端密码的**「值」**(创建时显示的字符串,仅显示一次),而非「密钥ID」
  • 检查密钥是否过期,若过期则重新生成客户端密钥并更新代码中的值

3. 确认站点URL与文件路径准确性

  • 确保代码中的站点URL(https://domain.sharepoint.com/sites/test)无拼写错误
  • 验证文件的服务器相对路径:在SharePoint中打开目标文件,查看「详情」中的路径,确保代码中DecodedUrl对应的编码路径与实际一致(比如空格需编码为%20)

4. 确认租户ID配置(若需)

部分场景下,使用ClientCredential需要指定租户ID,确保代码中正确配置:

from office365.sharepoint.client_context import ClientContext
from office365.runtime.auth.client_credential import ClientCredential

tenant_id = "你的租户ID"
client_id = "你的客户端ID"
client_secret = "你的客户端密钥"
site_url = "https://domain.sharepoint.com/sites/test"

# 初始化上下文,若需指定租户则传入tenant_id
ctx = ClientContext(site_url).with_credentials(ClientCredential(client_id, client_secret, tenant_id))

5. 授予应用站点级权限

如果仅需访问特定站点,可直接在SharePoint站点中授权:

  • 进入站点「设置」→「站点权限」→「高级权限设置」
  • 点击「授予权限」,添加应用程序(通过客户端ID搜索),并分配成员或所有者权限

内容的提问来源于stack exchange,提问作者Abhay Katiyar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 20:38:15