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

时间:2016-11-06 20:19:59

标签: json rest onedrive

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

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

我一直在尝试

我一直在查看Accessing Shared Content页面,它看起来像我想要的,但无法弄清楚如何使用它。

我从共享的URL中看到了一个看起来像id的东西,它看起来是一个很长的十六进制数字(这似乎是一个指向我的id?),一个!,然后是一个数字(我假设与共享资源有关。)

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

https://api.onedrive.com/v1.0/shares/<id>/root?expand=children

但我收到400 Bad Request,所以有些事情不太正确......

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

我试过register an app,在那里我获得了一个应用程序ID(guid)并且可以生成密码和密钥对。希望也许我可以使用它,但不要在API中看到实际使用它们的方式和位置......

目标

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

有些成员对计算机不太了解,所以我希望尽可能简单地查看和下载这些文件。共享链接有一个“转到这个其他奇怪的网站,并在那里找到文件” - 文字类型的作品,但我更愿意直接在一个仅限成员的区域列出文件我们的网站。基本上只是“这里是文件,点击一个下载它”。

1 个答案:

答案 0 :(得分:4)

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

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

最简单的方法是按照encode the actual sharing URL into a token的说明进行操作。这样你就可以创建一个base64编码版本的共享链接,附加一个&#34; u!&#34;到那个字符串的前面,然后进行你已经提到的确切调用。您将返回共享文件夹中的文件列表,您可以从那里开始。

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

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

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

û!aHR0cHM6Ly8xZHJ2Lm1zL2YvcyFBdHVBTV9OYWN3VmFoaUZwdU1HU19CaVFDd1d1

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

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

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