获取 OneDrive 直链GitHub 地址

本应用的目的是为了批量获取 OneDrive 直链,方便在其他站点外链。

使用方法(最简向)

输入面板

1. 登录并上传/选择文件下方两者任选其一,登录,上传或选择文件;
前者需要填写目标文件的authkey,而后者无需;详见F&Q.1。

2. 输出掩码选择上一步选择第一种的请在这里添加自己的authkey;
后者请选择`第三方 1drv.ws 项目`。

▲以上掩码设置仅保存在浏览器本地

输出面板

状态这里将显示调用的提示,你可根据他判断是否成功。
同时请关注这里有无额外提示。

输出文本这里将输出最终结果,复制即可。

隐私声明

使用微软官方API,这里不会得到你的账号密码和其他用户资料。
目前仅申请了Files.Read、Files.Read.Selected两个权限,API只会返回用户选择的文件的信息,不会获得其他内容。
纯前端应用,所有数据均缓存在本地,无后端留存。

F&Q

几种方式如何选择以及如何操作?

前了解到的几种方式有(大致描述):

  1. 【官方的】 使用 OneDrive 官方的分享链接。
  2. 【对应输入面板从OneDrive选择文件按钮】 使用 OneDrive-SDK 以代码流进行身份验证,以 query 方式请求,调用 FilePicker 选取/上传文件,并获取其链接(形如https://storage.live.com/items/${file.id})。此方案与云之幻开发的UWP应用“Picture Share”效果一致。
  3. 【对应输入面板从OneDrive创建分享链接按钮】 使用 OneDrive-SDK 以代码流进行身份验证,以share方式请求,调用 FilePicker 选取/上传文件,并获取其链接,配合 1drv.ws 项目使用。
  4. 【对应另一个项目】 使用 OneDrive-SDK 以令牌流进行身份验证,以 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及其值。将来这个文件夹内的文件及子文件夹都只需要这同一个通行码。
复制authkey
如果忘记,可以点击右上角信息符号,查看共享链接
查看信息
把authkey及其值加入到x外链地址掩码最后面,作为链接的参数,格式为“?authkey=xxxxxxx”
修改掩码

如何书写掩码?

2020年3月25日新增,并推荐使用ES6原生模板字符串${表达式}书写方式。 file表示该文件信息,index表示在获取列表中的序号,具体的 JSON 对象会在获取数据后发送到控制台(或查看全局变量 redata ),需要更多信息的的自己去看吧。

旧方法目前仍可用,但因为是自己实现的,因此不再推荐。旧方法请参考 掩码用法 底部的高级用法。 旧方法的掩码转新写法一般简单把前面的 % 修改为 $ 即可,但若掩码内使用了 \ 转义符的需要去掉,掩码外需要使用 \` 的则需加上转义符。 并且如果使用了变量定义,需要将其修改为闭包的函数表达式(function(可选接收传入参数){任何代码 return 输出字符串;})(可选传入外部参数)

为什么这个应用必须要在https下运行?

微软的规定,非https只返回错误,我也不想。

为什么要把文件放在“公开”文件夹?

新版OneDrive只有“公开”文件夹(含子文件夹)的权限才是“所有人”,其他文件夹分享必须登录才能看到,无法成功外链。

OneDrive窗口里如何全选?

磁贴模式下:选中第一个,拉到底下,按住Shift点击最后一个,中间的就会自动选上了。

列表模式下:点左上角那个选中全部的复选框就行了。

如何收回我授予的权限?

访问微软账户 你已授予访问权限的应用和服务 删除即可。