0

如何从 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'获取我使用过的url:

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 放在我登录的浏览器中,我可以下载该文件。

4

1 回答 1

1

您不能使用此 url 格式通过 Microsoft Graph 下载文件。访问令牌适用于 Microsoft Graph,但您的 url 适用于https://my_domain.sharepoint.com.

请参阅下载文件

你应该使用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列出子站点并找到“HR2”的 id。

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

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

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

  1. 调用GET https://graph.microsoft.com/v1.0/sites/my_domain.sharepoint.com:/sites/HR2以获取“HR2”的 id。

后续步骤与子站点相同。

于 2020-11-13T01:44:19.783 回答