使用office365-rest-python-client访问SharePoint遇AADSTS65001错误求助
问题原因及排查方向
1. 误用委托权限而非应用权限
后端无交互脚本必须使用应用权限(Application Permissions),如果给应用添加的是委托权限(Delegated Permissions),即便完成管理员同意,也会因需要用户交互式登录触发AADSTS65001错误。委托权限是代表用户操作,必须有用户上下文;应用权限是应用自身拥有权限,无需用户参与。
排查:
- 进入Entra管理中心的应用注册→权限页面,确认添加的权限类型为「应用权限」而非「委托权限」。
- 针对SharePoint操作,需添加对应应用权限(如创建页面需
Sites.FullControl.All或Sites.Manage.All)。
2. 管理员同意未正确生效
即使执行了管理员同意操作,仍可能存在以下问题导致权限未生效:
- 同意范围错误:确保是对所有租户用户的全局同意(应用权限的管理员同意需覆盖整个租户)。
- 权限更新后未重新同意:若先添加权限再补做同意操作,需确认同意动作覆盖了新添加的应用权限。
3. 代码认证方式错误
office365-rest-python-client中,应用权限模式(客户端凭证)的初始化逻辑与委托权限不同,误用用户交互类认证方式会触发权限错误:
- 错误示例(委托权限模式):
from office365.sharepoint.client_context import ClientContext from office365.runtime.auth.user_credential import UserCredential ctx = ClientContext(site_url).with_credentials(UserCredential(username, password)) - 正确示例(应用权限模式):
from office365.sharepoint.client_context import ClientContext from office365.runtime.auth.client_credential import ClientCredential ctx = ClientContext(site_url).with_credentials(ClientCredential(client_id, client_secret))
4. SharePoint站点未明确授予应用权限
即便应用拥有租户级SharePoint应用权限,部分场景下仍需在目标站点中单独授权:
- 可通过PowerShell执行授权(替换占位符):
Connect-PnPOnline -Url https://your-tenant.sharepoint.com/sites/security -ClientId <client-id> -ClientSecret <client-secret> Set-PnPAppPermission -AppId <client-id> -Scope Site -Right FullControl
5. 权限资源目标配置错误
确认应用权限的资源指向正确:
- SharePoint应用权限的资源需指向租户SharePoint根地址(如
https://your-tenant.sharepoint.com),而非其他无关资源。
内容的提问来源于stack exchange,提问作者MasterOfTheHouse
相关产品推荐
相关产品推荐

