202108101820.msapi dl 1drv

· chihuo2104's blog


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/

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

授权完了之后,我们会在你自己设置跳转的网页的?-后面看到一大堆物品,我们只需要提取出里面的code就行了~

`https://localhost/?code=你要提取的东西&session_state=隐私

?code=后&前的所有内容都要复制,保留备用。

接下来我们要把code拿去换token,我们打开Postman,新建一个Request。然后POST 你的OAuth 2.0 令牌终结点(v2)

参数:(Postman里面选择body - x-www-form-urlencoded)


参数 描述
client_id 你的应用程序/客户端ID
client_secret 你设置的安全令牌值
code 你刚刚复制的那一段code
grant_type 就是authorization_code(直接写进去就行了)
redirect_uri 你自己应用上面写的回调URL

然后再点击Send,再在下面把Access_Token复制好,要用的。

接下来我们就要获取你OneDrive里面的文件了

然后我们再在Postman里面创建一个Request,GET格式,在Header加上:

Key是Authorization,Value是

bearer 你拿到的access_token

然后我们在URL里面输入上

https://graph.microsoft.com/v1.0/me/drive/root:/你文件的相对目录

比如说你的文件在根目录上,叫a.flv,则是

https://graph.microsoft.com/v1.0/me/drive/root:/a.flv

然后我们再点一下Send,我们就已经可以知道下载地址了,在@microsoft.graph.downloadUrl里面的那一串数字就是下载链接。

其实我们只是调试了一下,我们具体在应用过程中可以直接上XHR。

微软太良心了!速度又快还是免费的,比**网盘好多了~

3.总结 #

微软的API太多了,太广了,验证太那个了,因此难学啊~