如何在Python中针对ms项目在线odata接口进行身份验证?

问题描述 投票:0回答:1

我的目标是在python中访问MS-project(在线=云版本)的odata-api。该 API 可通过以下方式访问:

https://mycompany.sharepoint.com/sites/myprojectinstance/_api/ProjectData/

我的活动目录用户有权访问 ms-project-instance 和 odata-api:我可以使用网络浏览器(登录到我的 Microsoft 帐户)和 Power-BI 访问数据。以下是成功请求的一部分:

service xml:base="https://mycompany.sharepoint.com/sites/myprojectinstance/_api/ProjectData/">
<workspace>
<atom:title>Default</atom:title>
<collection href="Projekte">
<atom:title>Projekte</atom:title>
</collection>

但我想做的是编写一个 python 脚本来访问 odata-feed。问题:使用 basic-auth 或 ntlm-auth 无法进行身份验证。这是我的 ntlm 示例:

import json
import requests
from requests_ntlm import HttpNtlmAuth

# Set the  API endpoint URL
ms_project_api_url = 'https://mycompany.sharepoint.com/sites/myprojectinstance/_api/ProjectData/'

with open('../secrets.json') as f:
  secrets = json.load(f)

response = requests.get(ms_project_api_url, auth=HttpNtlmAuth(secrets['username'], secrets['password']))

对于用户名,我尝试了不同的语法:prename.lastname、domain\prename.lastname、domain\[email protected] 等。

我总是得到:

<m:error xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
<m:code>-2147024891, System.UnauthorizedAccessException</m:code>
<m:message xml:lang="de-DE">Attempted to perform an unauthorized operation.</m:message
</m:error>

我知道使用 microsoft 身份验证库 for python 可能可以正常工作,但我想找到一种无需在 Azure 门户中注册应用程序的方法。 在我的研究过程中,我发现了一篇关于邮递员使用应用程序注册的post,但没有关于如何使用 ntlm-auth 的(有效)解决方案。 如何让 ntlm-auth 工作?

python odata ms-project
1个回答
0
投票

¿你找到解决办法了吗? 我想知道是否有一种方法可以将特定变量调用到python脚本中,这样您就可以首先从ms项目中获取odata,就像使用它一样,并在每次更新项目时刷新,然后再更新其他项目再次手动运行脚本,调用数据中的变量。

写信给我,我们会一起找到解决方案

© www.soinside.com 2019 - 2024. All rights reserved.