使用 Python 访问 Office365 Sharepoint REST 端点(适用于 Python 的 Office365 Sharepoint REST 客户端)
Posted
技术标签:
【中文标题】使用 Python 访问 Office365 Sharepoint REST 端点(适用于 Python 的 Office365 Sharepoint REST 客户端)【英文标题】:Accessing Office365 Sharepoint REST EndPoints using Python (Office365 Sharepoint REST client for Python) 【发布时间】:2020-12-20 21:45:38 【问题描述】:我正在尝试从 Python 访问 Sharepoint 站点,但 AADSTS 似乎有一个条件访问策略阻止我获取令牌。
有没有人使用 Office365 Python Rest Client 成功连接到 Sharepoint Rest Endpoint?
这是我看到的实际错误
"C:\Python\envs\dev\python.exe c:\Users\xxxxxx.vscode\extensions\ms-python.python-2020.8.105369\pythonFiles\lib\python\debugpy\launcher 52801 -- c:\xxxx\Code\PythonSharepointUpdate\readsharepoint.py " An error occurred while retrieving token from XML response: AADSTS53003: Access has been blocked by Conditional Access policies. The access policy does not allow token issuance. An error occurred while retrieving auth cookies from https://microsoft.sharepoint.com/_vti_bin/idcrl.svc/
I am trying to execute this code from the Sample
from office365.runtime.auth.user_credential import UserCredential
from office365.sharepoint.client_context import ClientContext
from office365.runtime.auth.authentication_context import AuthenticationContext
site_url = 'https://microsoft.sharepoint.com/teams/'
ctx = ClientContext(site_url).with_credentials(UserCredential("user@domain.com", "My Complex Password”))
web = ctx.web
ctx.load(web)
ctx.execute_query()
print("Web title: 0".format(web.properties['Title']))
另外 – 有没有更好的方法来验证 Sharepoint – 我讨厌必须在代码中以明文形式输入我的密码☹
有人使用 ClientCredential 吗? Sharepoint 站点上是否有单独的设置来启用 ClientCredential?我们的 Sharepoint 是否允许我们这样做?
【问题讨论】:
【参考方案1】:诀窍是使用 ClientCredentials 而不是 UserCredentials。
必须使用新的 ClientID 和 Client Secret 在 Sharepoint 站点上创建一个新应用程序。创建新应用后,必须为新创建的应用授予网站权限。设置权限后,您必须信任该应用。
完整的解释和步骤记录在这里https://github.com/vgrem/Office365-REST-Python-Client/wiki/How-to-connect-to-SharePoint-Online-and-and-SharePoint-2013-2016-2019-on-premises--with-app-principal
【讨论】:
以上是关于使用 Python 访问 Office365 Sharepoint REST 端点(适用于 Python 的 Office365 Sharepoint REST 客户端)的主要内容,如果未能解决你的问题,请参考以下文章
在没有 Office 365 订阅的情况下使用 Azure 多租户应用程序访问用户日历信息