我有一个公开共享的OneDrive文件夹,其中包含一些不同的子文件夹和文件 . 即我通过链接分享了它,所以有这个链接的人都可以访问它们 .
有没有办法可以通过某种REST API从客户端JavaScript或某些服务器端代码访问这些文件?无需使用任何类型的用户特定凭据?
What I've been trying
我一直在看Accessing Shared Content页面,它看起来像我想要的,但无法弄清楚如何使用它 .
我从共享URL中看到了一个看起来像id的东西,它看起来是一个很长的十六进制数字(这似乎是一个指向我的id?),一个!,然后是一个数字(我假设必须这样做)与共享资源) .
我已经尝试将其粘贴在此URL中:
https://api.onedrive.com/v1.0/shares/<id>/root?expand=children
但是我收到400 Bad Request,所以有些事情不太正确......
我想也许缺少某种身份验证,但由于共享文件是公共的,我不是用户必须使用他们的凭据登录,当然不能使用我自己的代码 .
我试过register an app,在那里我获得了一个应用程序ID(guid)并且可以生成密码和密钥对 . 希望我可以使用它,但不要在API中看到实际使用它们的方式和位置......
Goal
共享文件夹包含合唱团的乐谱,我负责保持更新(OneDrive同步在这里非常方便) .
有些成员不希望看到和下载这些文件尽可能简单 . 共享链接有一个“转到这个其他奇怪的网站并找到那里的文件"-text sort of works, but I would much rather like to list the files directly in a member-only area of our website. Basically just "这里是文件,点击一个下载它” .
1 回答
是的,您可以使用REST API访问文件夹的内容 .
API是您提到的API,即shares API . 但是,听起来你可能正在使用错误的ID .
最直接的方法是按照encode the actual sharing URL into a token的说明进行操作 . 这样,您可以创建共享链接的base64编码版本,将"u!"附加到该字符串的前面,然后进行您已经提到的完全调用 . 您将获得共享文件夹中的文件列表,您可以从那里开始 .
下面是一个示例:这是OneDrive中文件夹的共享链接,其中包含一些照片 .
https://1drv.ms/f/s!AtuAM_NacwVahiFpuMGS_BiQCwWu
要将此URL转换为API,您首先对URL进行base64编码并附加u!
ü!aHR0cHM6Ly8xZHJ2Lm1zL2YvcyFBdHVBTV9OYWN3VmFoaUZwdU1HU19CaVFDd1d1
现在,您可以使用此URL作为共享令牌,并展开子项和缩略图:
https://api.onedrive.com/v1.0/shares/u!aHR0cHM6Ly8xZHJ2Lm1zL2YvcyFBdHVBTV9OYWN3VmFoaUZwdU1HU19CaVFDd1d1/root?expand=children
单击此底部链接应该为您提供JSON响应,其中包括共享文件夹和文件夹中的子项 .