问题描述
如何从ms图的任务详细信息中下载引用?
我从任务详细信息(plannerTaskDetails资源类型)获得以下参考:
https://my_domain.sharepoint.com/sites/HR2/Shared Documents/2.csv?web=1
,我想下载文件,但得到:
'401 UNAUTHORIZED'
我具有以下委派权限:
我不知道是否必须添加其他权限。任何帮助表示赞赏。
引用的实际值为'https%3A//my_domain%2Esharepoint%2Ecom/sites/HR2/Shared Documents/2%2Ecsv?web=1'
,以获取我使用的网址:
from urllib.parse import unquote
url = 'https%3A//my_domain%2Esharepoint%2Ecom/sites/HR2/Shared Documents/2%2Ecsv?web=1'
sp_url = unquote(url)
sp_url
# 'https://my_domain.sharepoint.com/sites/HR2/Shared Documents/2.csv?web=1'
解决方法
您不能使用此url格式通过Microsoft Graph下载文件。访问令牌用于Microsoft Graph,但您的网址用于https://my_domain.sharepoint.com
。
请参阅Download a file。
您应该使用GET https://graph.microsoft.com/sites/{siteId}/drive/root:/{item-path}:/content
。
它将返回一个302 Found
响应,重定向到该文件的预认证下载URL 。这是通过DriveItem上的@ microsoft.graph.downloadUrl属性提供的相同URL。
然后,您可以使用此下载URL下载文件。
但是根据我的最新测试,/content
对我不起作用。我不确定它是否适合您。所以这里有另一种方法。
在您的情况下,我假设HR2是my_domain.sharepoint.com
下的子站点。
那么实际的请求应该是:
-
调用
GET https://graph.microsoft.com/v1.0/sites/my_domain.sharepoint.com/sites
列出子站点并找到ID“ HR2”。 -
致电
GET https://graph.microsoft.com/v1.0/sites/{id of "HR2"}/drive/root:/2.csv
。
在响应中,有一个@microsoft.graph.downloadUrl
属性。您可以直接使用该网址下载文件。
如果HR2是另一个网站集,则请求应为:
- 呼叫
GET https://graph.microsoft.com/v1.0/sites/my_domain.sharepoint.com:/sites/HR2
以获取ID“ HR2”。
后续步骤与子站点相同。