0

我正在尝试将仅限应用程序的流程用于共享点。

首先,我使用此 URL https://mydomain.sharepoint.com/sites/sample/_layouts/15/appregnew.aspx创建了一个新的应用程序客户端 ID 和密码。

然后我转到 URL https://mydomain.sharepoint.com/sites/sample/_layouts/15/appinv.aspx使用以下 xml 授予此应用程序的权限。

<AppPermissionRequests AllowAppOnlyPolicy="true"> <AppPermissionRequest Scope="http://sharepoint/content/sitecollection" Right="FullControl"/> <AppPermissionRequest Scope="http://sharepoint/content/sitecollection/web" Right="FullControl"/> </AppPermissionRequests>

并点击信任它。

我正在使用的代码:

from office365.runtime.auth.authentication_context import AuthenticationContext
from office365.sharepoint.client_context import ClientContext

site_url = 'https://mydomain.sharepoint.com/sites/sample/'
app_principal = {
  'client_id': '.....-..',
  'client_secret': '......=',
}

context_auth = AuthenticationContext(url=site_url)
context_auth.acquire_token_for_app(client_id=app_principal['client_id'], 
client_secret=app_principal['client_secret'])

ctx = ClientContext(site_url, context_auth)
web=ctx.web
ctx.load(web)
ctx.execute_query()
if len(result) > 0:
    print("Folder has been found: {0}".format(result[0].properties["Name"]))

但它会引发以下错误: Traceback (most recent call last): File "client.py", line 16, in <module> ctx.execute_query() File "C:\Users\AppData\Local\Programs\Python\Python37\lib\site-packages\office365\runtime\client_runtime_context.py", line 140, in execute_query self.pending_request().execute_query() File "C:\Users\AppData\Local\Programs\Python\Python37\lib\site-packages\office365\runtime\client_request.py", line 79, in execute_query raise ClientRequestException(*e.args, response=e.response) office365.runtime.client_request_exception.ClientRequestException: (None, None, '401 Client Error: Unauthorized for url: https://mydomain.sharepoint.com/sites/sample/_api/Web')

需要帮忙。

4

1 回答 1

2

我按照您的步骤操作,但无法重现您的问题。 在此处输入图像描述

如果您的 office365 租户是最近创建的,您可以尝试运行以下命令。

Set-SPOTenant -DisableCustomAppAuthentication $false

提示:您需要将 SharePoint Online 托管外壳更新到最新版本。

更新: 在此处输入图像描述

于 2020-09-24T07:13:05.770 回答