【发布时间】:2022-01-03 15:52:15
【问题描述】:
我编写的一个 python 烧瓶应用程序正在使用 office 365 库与我们公司的共享点(在 365 云中)进行交互。
我设置了以下应用权限,但是
https://xyz.sharepoint.com/sites/xxxyyyzzz/_api/Web/getFolderByServerRelativeUrl('sites%2Fxxxyyyzzz%2FFreigegebene%2520Dokumente%2FGeneral')/Folders"
返回401 - Unauthorized error.
<AppPermissionRequests AllowAppOnlyPolicy="true">
<AppPermissionRequest Scope="http://sharepoint/content/sitecollection" Right="FullControl" />
<AppPermissionRequest Scope="http://sharepoint/content/sitecollection" Right="FullControl"/>
<AppPermissionRequest Scope="http://sharepoint/content/sitecollection/web" Right="FullControl"/>
<AppPermissionRequest Scope="http://sharepoint/content/sitecollection/web/list" Right="FullControl"/>
<AppPermissionRequest Scope="http://sharepoint/content/xyz" Right="FullControl"/>
</AppPermissionRequests>
这解决了以下权限:
- 让它完全控制此网站集。
- 让它完全控制这个网站。
- 让它完全控制列表:
- 文档
- 让它与其他用户共享其权限。
- 让它访问有关本网站用户的基本信息。
上传/下载文件等其他调用正常,但我无法让列表文件夹/创建文件夹/工作。 我也从未发现任何其他权限或更高的访问级别in the documentation.
我错过了什么?
【问题讨论】:
-
401 错误意味着您没有任何访问令牌来请求共享点资源。此错误不涉及访问权限。首先您必须修复身份验证错误,然后您将看到对资源的授权(访问权限)如何。涉及访问权限的 403 错误。
-
要在 sharepoint 上进行在线身份验证,您必须创建可访问 sharepoint 的 AAD 应用注册,并请求 OAuth 令牌,如此处所述:blog.velingeorgiev.com/… 如果您这样做了,请提供有关您项目的更多信息。
-
正如提到的其他调用正在工作,所以我很难理解为什么它应该是一个身份验证错误。没有文件是公开的,但我无法通过 api 接收它们,所以连接似乎有效?
-
浏览器开发者控制台、Fiddler 或其他调试 Web 请求的应用程序可以帮助您了解应用程序查询成功或不成功之间的区别。现在我想您的应用程序没有正确的身份验证令牌。不幸的是,您没有描述如何在应用程序中实现身份验证。加载项权限不是身份验证。您的应用中的某个请求中缺少或不正确的身份验证令牌。
-
我终于设法解决了。该错误非常烦人,实际上是递归创建文件夹的问题。使用 Office365 python 库进行身份验证。
标签: python-3.x sharepoint permissions