【发布时间】:2017-10-08 01:47:24
【问题描述】:
我尝试通过 Microsoft Graph 从 OneDrive 下载几个文件。
我非常接近实现我的目标。目前我已经管理了令牌系统(特别是通过Jay Lee detailed answer),并解决了我在 Microsoft Graph 中存在的不同端点之间造成的混淆(谢谢Marc LaFleur - MSFT)。
现在我真正致力于调用允许下载我想要的文件的 API。我是这样处理的:
1- 正如我在Microsoft Graph Documentation 中看到的,正常语法如下:
curl -w %{time_total} https://graph.microsoft.com/v1.0/me/drive/items/01M...WU/content -H "Authorization: Bearer $access_token"
2- 但是,这给了我一个 302 请求,我无法在 bash 中处理。所以我寻找另一种解决方案,我发现这个Microsoft article 解释说:
“要在 JavaScript 应用程序中从 OneDrive 下载文件您不能使用 /content API,因为它会以 302 重定向响应。当需要 CORS 预检时,明确禁止 302 重定向,例如与提供 Authorization 标头时一样。
相反,您的应用需要选择 @microsoft.graph.downloadUrl 属性,该属性返回 /content 重定向到的相同 URL。然后可以使用 XMLHttpRequest 直接请求此 URL。因为这些 URL 是经过预验证的,所以无需 CORS 预检请求即可检索它们。”
它谈到了 Javascript,但我认为它可以应用于我的案例。
3-所以我尝试了这种方法并写道:
curl "https://graph.microsoft.com/v1.0/me/drive/items/01MB...WU?select=id,@microsoft.graph.downloadUrl" -H "Authorization: Bearer $access_token"
它给了我通常允许我最终下载文件的 URL,但是当我执行它时,我得到以下响应:
代码:
curl "https://graph.microsoft.com/v1.0/$metadata#users('e967dd4d-680e-4a06-9bf7-468875e1a04c')/drive/items/$entity" -H "Authorization: Bearer $access_token"(这正是我之前的请求得到的)
回应:
有什么帮助吗?为什么这是一个错误的请求,因为我已经完全按照我从 graph.microsoft.com 请求中获得的内容提出了请求?
【问题讨论】:
标签: bash curl onedrive microsoft-graph-api