[技术向]通过微软官方API获取OneDrive下载直链

发布于 2021-08-10  200 次阅读


1.缘起

最近白嫖了微软的开发者订阅(以后可能会写一篇文章),E5是个好东西~凭这个我白嫖了1TB的OneDrive。

正好同学有需求,我就想着把OneDrive外链搞出来,耗了我一个上午的时间查API文档和调试(我亲爱生母后妈一直喊着:”背书!背书!“),然后终于搞出来了//微软的生态还算很好的👍

2.正文

首先,你需要有一个有OneDrive的账号(微软开发者订阅/教育版A1等等等等)以及Postman这种接口调试工具(用CURL的,膜拜膜拜)

我们这里以国际版OneDrive与OneDrive for Business为例,国内版本(世纪互联)请自行使用G搜索

首先,到这里然后点击创建应用。

应用创建时,名称随便你填,重定向URL建议https://localhost(其实你填其他的也行,我们最主要是获取Code)。

注册好了之后,记住自己应用的应用程序/客户端ID,我们以后要用的。

然后我们要授予这个API权限,先点击API权限,再点击添加权限。

然后选择Microsoft Graph

再选择委托的权限。

在下面一堆的API里面找到Files然后展开,选择Files.Read.All和Files.Read.Selected。然后再点击添加权限。

然后再看一下权限是不是配置好了

接下来我们还要再配置Secret令牌,这个也要用.....

回到主页,点击添加证书或机密(微软神仙机翻,颇有软体的味道)。

然后再点击新客户端密码

说明随你,期限你自己挑。

然后创建好了,把值记住,以后我们也要用的。

最后一步,进入概述,点击终结点/地域(Endpoint)微软神仙机翻。找到OAuth 2.0 授权终结点(v2)与OAuth 2.0 令牌终结点(v2),这两个链接复制好,就是我们的Base URL。

接下来我们就开始用了~

首先我们需要授权它访问我们的OneDrive资源,就需要Code。

https://{OAuth 2.0授权终结点[v2]}?client_id=[自己的应用程序/客户端ID]&redirect_uri=[你在之前写的跳转URL]&grant_type=authorization_code&client_secret=[令牌的值]&scope={offline_access Files.Read.All Files.Read.Selected]&response_type=code

这里注意下,scope里面的如果有offline_access好像只要验证一次,值要有空格!剩下的是你API申请的权限(就是写你API权限那么一堆)

最后的URL生成就像这样:

https://login.microsoftonline.com/隐私片段/oauth2/v2.0/authorize?client_id=隐私片段&grant_type=authorization_code&client_secret=隐私片段&scope=offline_access Files.Read.All Files.Read.Selected&response_type=code&redirect_uri=https://localhost/

然后就可以登录授权了~登录授权接受即可。