如何解决使用Python连接到Sharepoint REST API
我正在尝试使用以下代码通过应用程序使用python连接到sharepoint-
from office365.runtime.auth.authentication_context import AuthenticationContext
from office365.sharepoint.client_context import ClientContext
site_url = 'https://redacted-admin.sharepoint.com/sites/Test'
app_principal = {
'client_id': 'redacted','client_secret': 'redacted',}
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()
print("Web site title: {0}".format(web.properties['Title']))
这给了我以下错误-
Traceback (most recent call last):
File "Sharepoint.py",line 17,in <module>
ctx.execute_query()
File "C:\Python\lib\site-packages\office365\sharepoint\client_context.py",line 43,in execute_query
super(ClientContext,self).execute_query()
File "C:\Python\lib\site-packages\office365\runtime\client_runtime_context.py",line 37,in execute_query
self.pending_request.execute_query()
File "C:\Python\lib\site-packages\office365\runtime\client_request.py",line 32,in execute_query
response = self.execute_request_direct(request)
File "C:\Python\lib\site-packages\office365\runtime\client_request.py",line 41,in execute_request_direct
self.context.authenticate_request(request_options)
File "C:\Python\lib\site-packages\office365\runtime\client_runtime_context.py",line 15,in authenticate_request
self.__auth_context.authenticate_request(request)
File "C:\Python\lib\site-packages\office365\runtime\auth\authentication_context.py",in authenticate_request
request_options.set_header('Authorization',self.provider.get_authorization_header())
File "C:\Python\lib\site-packages\office365\runtime\auth\acs_token_provider.py",line 76,in get_authorization_header
return 'Bearer {0}'.format(self.access_token["access_token"])
KeyError: 'access_token'
在执行任何操作之前,我想检查一下连接是否正常,有人可以帮忙吗?
解决方法
您应该尝试从DOCS发出这样的请求(假设client_id和client_sercret)是用户名/密码,而不是身份验证端点返回的其他ID和令牌。
from office365.runtime.auth.authentication_context import AuthenticationContext
from office365.sharepoint.client_context import ClientContext
url = site_url = 'https://redacted-admin.sharepoint.com/sites/Test'
app_principal = {
'client_id': 'redacted','client_secret': 'redacted',}
ctx_auth = AuthenticationContext(url)
if ctx_auth.acquire_token_for_user(app_principal['client_id'],app_principal['client_secret']):
ctx = ClientContext(url,ctx_auth)
web = ctx.web
ctx.load(web)
ctx.execute_query()
print "Web title: {0}".format(web.properties['Title'])
else:
print ctx_auth.get_last_error()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。