如何从ms图的任务详细信息中下载引用?

问题描述

如何从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放在登录的浏览器中,则可以下载文件

解决方法

您不能使用此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下的子站点。

那么实际的请求应该是:

  1. 调用GET https://graph.microsoft.com/v1.0/sites/my_domain.sharepoint.com/sites列出子站点并找到ID“ HR2”。

  2. 致电GET https://graph.microsoft.com/v1.0/sites/{id of "HR2"}/drive/root:/2.csv

在响应中,有一个@microsoft.graph.downloadUrl属性。您可以直接使用该网址下载文件。

如果HR2是另一个网站集,则请求应为:

  1. 呼叫GET https://graph.microsoft.com/v1.0/sites/my_domain.sharepoint.com:/sites/HR2以获取ID“ HR2”。

后续步骤与子站点相同。