使用微软官方API,这里不会得到你的账号密码和其他用户资料。
目前仅申请了Files.Read、Files.Read.Selected两个权限,API只会返回用户选择的文件的信息,不会获得其他内容。
纯前端应用,所有数据均缓存在本地,无后端留存。
前了解到的几种方式有(大致描述):
从OneDrive选择文件按钮】 使用 OneDrive-SDK 以代码流进行身份验证,以
query 方式请求,调用 FilePicker
选取/上传文件,并获取其链接(形如https://storage.live.com/items/${file.id})。此方案与云之幻开发的UWP应用“Picture
Share”效果一致。
从OneDrive创建分享链接按钮】 使用 OneDrive-SDK
以代码流进行身份验证,以share方式请求,调用 FilePicker
选取/上传文件,并获取其链接,配合 1drv.ws 项目使用。share 方式请求,使用上传文件 api
进行上传,并获取其链接。优劣:
| 方式 | 需要登陆 | 选取文件是否需要翻墙 | 是否需要authkey | 分享链接是否需要翻墙 | 由我共享页 |
其他 |
|---|---|---|---|---|---|---|
| 1 | 是 | 否 | 否 | 是 | 看你分享的文件夹还是文件 | |
| 2 | 是 | 是 | 是 | 否 | 仅文件夹 | |
| 3 | 是 | 是 | 否 | 否 | 文件 | |
| 4 | 是 | 否 | 否 | 否 | 文件 | 仅能上传,不能选择已有文件 |
步骤:
第一种:不再赘述
第二种:登录,选择文件后,获取文件所在文件夹的(通行许可代码authkey),添加掩码https://storage.live.com/items/${file.id}?authkey=你的通行许可代码。
第三种:见最开始的方法步骤。
第四种:见 github.com/harrisoff/onedrive 。
1drv.ws 是另一个第三方项目 The OneDrive Direct Link
Helper,通过获取文件的下载链接来达到外链目的。
只需要将 1drv.ms 修改为 1drv.ws 即可。
因为需要后端实现对 onedrive.live.com 的重定向,因此本纯前端网页程序无法内置。
最终重定向地址类似于“官方图片下载直连”
优点:直接使用生成的分享链接,不需要先嵌入,再添加 authkey。据说是香港的CDN,比较快。
缺点:API 必须使用 share 模式来读取数据,因为无法直接选择文件夹,因此 OneDrive 由我共享 内会生成大量项目。
该方式得到的是下载链接,并不能直接在浏览器内预览文件。
选中需要共享的文件夹,点击嵌入

在右方复制authkey及其值。将来这个文件夹内的文件及子文件夹都只需要这同一个通行码。

如果忘记,可以点击右上角信息符号,查看共享链接

把authkey及其值加入到x外链地址掩码最后面,作为链接的参数,格式为“?authkey=xxxxxxx”

2020年3月25日新增,并推荐使用ES6原生模板字符串${表达式}书写方式。
file表示该文件信息,index表示在获取列表中的序号,具体的 JSON 对象会在获取数据后发送到控制台(或查看全局变量 redata
),需要更多信息的的自己去看吧。
旧方法目前仍可用,但因为是自己实现的,因此不再推荐。旧方法请参考 掩码用法 底部的高级用法。
旧方法的掩码转新写法一般简单把前面的 % 修改为 $ 即可,但若掩码内使用了 \ 转义符的需要去掉,掩码外需要使用
\ 和 ` 的则需加上转义符。
并且如果使用了变量定义,需要将其修改为闭包的函数表达式(function(可选接收传入参数){任何代码 return 输出字符串;})(可选传入外部参数)
微软的规定,非https只返回错误,我也不想。
新版OneDrive只有“公开”文件夹(含子文件夹)的权限才是“所有人”,其他文件夹分享必须登录才能看到,无法成功外链。
磁贴模式下:选中第一个,拉到底下,按住Shift点击最后一个,中间的就会自动选上了。
列表模式下:点左上角那个选中全部的复选框就行了。
访问微软账户 你已授予访问权限的应用和服务 删除即可。