jme*_*001 6 python rest access-token sharepoint-online postman
任何帮助深表感谢!我已经尝试了很多库和方法来做到这一点,但似乎没有任何效果。我对 REST API 和使用它们访问 SharePoint 缺乏经验。我尝试了使用 Python 请求、office365-REST-Python-Client、HttpNtlmAuth、OAuth2、rauth 等的各种代码示例。
我们的 SharePoint 管理员为我设置了一个 SharePoint 加载项来访问我的网站数据。说这不会是我在 API 中的用户名和密码,而是使用客户端,首先获取访问令牌,然后进行 API 调用。
令人沮丧的是 SharePoint 管理员在 Postman 中设置了调用,并且 API 请求调用来获取访问令牌并获取我希望在那里正常工作的网站文件和文件夹数据。我什至可以使用她创建的相同参数在 Postman 中创建自己的 API 请求,效果非常好。但尝试在我的 Python 应用程序中执行此操作却遇到了各种错误和问题。现在,我只是尝试在 Python 中检索我的访问令牌。
这是我当前的代码和错误。自从我在网上发布此内容以来,由于显而易见的原因,括号内的所有文本和全部大写都是非文字/模糊的。错误是:
文件“[我的本地驱动器位置...]\venv\lib\site-packages\office365\runtime\auth\authentication_context.py”,第 45 行,在 acquire_token_for_app 中引发 ValueError('获取令牌失败: {0}'.format (self.provider.error))ValueError:获取令牌失败:无
from office365.runtime.auth.authentication_context import AuthenticationContext
from office365.sharepoint.client_context import ClientContext
class SharepointService:
site_url = 'https://accounts.accesscontrol.windows.net/[TENANT ID the SP ADMIN GAVE ME]/tokens/OAuth/2?content'
client_id = '[THE CLIENT ID THE SP ADMIN GAVE ME]'
client_secret = '[THE CLIENT SECRET THE SP ADMIN GAVE ME]'
app_principal = {'client_id': client_id, 'client_secret': client_secret}
context_auth = AuthenticationContext(url=site_url)
token = context_auth.acquire_token_for_app(client_id=app_principal['client_id'], client_secret=app_principal['client_secret'])
print(token)
ctx = ClientContext(site_url, context_auth)
web = ctx.web
ctx.load(web)
ctx.execute_query()
print("Web site title: {0}".format(web.properties['Title']))
Run Code Online (Sandbox Code Playgroud)
小智 1
看来您应该将您的 site_url 更改为您要访问的网站。
from office365.runtime.auth.authentication_context import AuthenticationContext
from office365.sharepoint.client_context import ClientContext
site_url = 'https://contoso.sharepoint.com/sites/dev'
app_principal = {
'client_id': 'e53634cb-xxxx-4e3a-8557-026a9393e215',
'client_secret': 'SKjZHU4Ubr2BTouPsiXXtz9YeHU/yBww/xXxanq1I2k=',
}
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']))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13027 次 |
| 最近记录: |