通过 API 访问公开共享的 OneDrive 文件夹

Svi*_*ish 4 rest json onedrive

我有一个公开共享的 OneDrive 文件夹,其中包含一些不同的子文件夹和文件。即我通过链接分享了它,所以任何有这个链接的人都可以访问它们。

有没有一种方法可以通过某种 REST API 从客户端 JavaScript 或某些服务器端代码访问这些文件?无需使用任何特定于用户的凭据?


我一直在尝试的

我一直在查看访问共享内容页面,它看起来像我想要的,但不知道如何使用它。

我从共享 URL 中获取了一些看起来像 id 的东西,它看起来是一个很长的十六进制数(这似乎是一个指向我的 id?),一个!,然后是一个数字(我认为必须这样做与共享资源)。

然后我尝试将其粘贴在此 URL 中:

https://api.onedrive.com/v1.0/shares/<id>/root?expand=children
Run Code Online (Sandbox Code Playgroud)

但是我收到了一个 400 错误的请求,所以有些事情不太对劲……

我在想可能缺少某种身份验证,但由于共享文件是公开的,我不需要用户使用他们的凭据登录,当然也不能在代码中使用我自己的。

我尝试注册一个应用程序,在那里我获得一个应用程序 ID (guid) 并且可以生成密码和密钥对。希望也许我可以使用它,但没有在 API 中看到如何以及在何处实际使用这些...


目标

共享文件夹包含合唱团的乐谱,我负责保持更新(OneDrive 同步在这里非常方便)。

有些成员不太懂电脑,所以我想让查看和下载这些文件尽可能容易。带有“去这里到另一个奇怪的网站并在那里找到文件”的共享链接 -文本类型的作品,但我更愿意直接在我们网站的会员专区中列出文件。基本上只是“这里有文件,点击一个下载”。

Rya*_*egg 8

是的,您可以使用 REST API 访问文件夹的内容。

API 就是您提到的共享API。但是,听起来您可能使用了错误的 ID。

最直接的方法是按照说明将实际共享 URL 编码为令牌。通过这种方式,您可以创建共享链接的 base64 编码版本,并附加一个“u!” 到该字符串的前面,然后进行您已经提到的确切调用。您将返回共享文件夹中的文件列表,您可以从那里开始。

下面是一个示例:这是 OneDrive 中一个文件夹的共享链接,其中包含一些照片。

https://1drv.ms/f/s!AtuAM_NacwVahiFpuMGS_BiQCwWu

要将此 URL 转换为 API,您首先要对 URL 进行 base64 编码并附加 u!

u!aHR0cHM6Ly8xZHJ2Lm1zL2YvcyFBdHVBTV9OYWN3VmFoaUZwdU1HU19CaVFDd1d1

现在您可以使用此 URL 作为共享令牌,并展开子项和缩略图:

https://api.onedrive.com/v1.0/shares/u!aHR0cHM6Ly8xZHJ2Lm1zL2YvcyFBdHVBTV9OYWN3VmFoaUZwdU1HU19CaVFDd1d1/root?expand=children

单击此底部链接应为您提供 JSON 响应,其中包括共享文件夹和文件夹内的子项。

  • 我在答案中添加了一个示例。 (2认同)