通过PicUploader上传文件到微软OneDrive网盘
Table of Contents
(本文是PicUploader: 各图床获取上传图片参数的方法的子文章)
获取参数之前要注意和准备的东西
特别注意
如果想用OneDrive做图床,必须使用付费的个人版才可以,其它版本(包括免费个人版)只能上传,但无法获取分享链接(或者说获取到的分享链接是需要登录才能查看),详情可以查看:github issue。
免费申请Office365教育版
如果你自己没有企业/教育或个人购买的Office365,可以使用下面的地址申请个免费的试试,学生版和教师版随便哪个都行。
学生版申请地址:student
教师版申请地址:faculty
用于接收微软Office365教育版的临时邮箱:
http://mail.mzr.me
http://sysu.edu.pl
http://od.obagg.com
http://mail.hrka.net
http://mail.xgdfz.tech
教程:https://www.wsho.cn/html/1260.html
获取访问OneDrive API需要的参数
要获取哪些参数
要通过API接入OneDrive,我们需要三个参数:租户(tanant)、客户端ID(clientId)、密码(clientSecret),这些参数我们需要从OneDrive的后台获取。
事实上,OneDrive本身并没有一个叫“OneDrive”的后台,而是通过微软的云服务“Azure”来提供API的。
获取clientId
点击Azure Portal进入Azure的控制面板,点击“Azure Active Directory”
新注册一个应用
其中重定向URI的格式是:https://你的域名/auth/OnedriveRedirect.php,比如你的PicUploader后台域名是https://api.picuploader.com, 那么你要写成:https://api.picuploader.com/auth/OnedriveRedirect.php
重定向URI一般来说都要用https,如果是http,则只允许前缀为“http://localhost”开头,如果你是在本地安装的,你可以这样设置https
在这里能找到第一个参数clientId
:
获取clientSecert
clientSecret即客户端密码(注意创建好之后要马上复制,刷新后你就看不到密码了(变成*
号了),如果你要重新复制,那只能删除它,再创建一个新的)
给API添加权限
添加API权限(否则到时你无法通过api上传文件):
到这里就添加权限完成了
总结一下,在“概述”里找clientId,在“证书和密码”里自己创建clientSecret(即客户端密码,创建后马上复制,下次来就看不到了,如果之前的密码丢了只能删除再创建新的),在”API权限“里设置权限(勾选Microsoft Graph→委托的权限→Files→勾选Files下的所有权限):
获取tenant参数
拿tenant参数有两种方法,一种是在:默认目录→应用注册→终结点,如下图所示的,PicUploader中tenant
值就应该是d6378ae5-499f-40f9-84d4-9fe81fdbee46
:
你也可以在“默认目录”→“应用注册”→“所有应用程序”里找到你前面添加的PicUploader程序,然后点进去
上边点进去后会来到这里,这里同样有个终结点(即“common”),我这边免费个人账号测的用common可以,但第一种方法的终结点不可以,不知道收费的个人版(或者说家庭版可不可以,没有账号测试)
开始获取授权
填好三个参数后,在PicUploader后台OneDrive配置页中,点击获取onedrive授权
跳转到该页面,直接点是
:
有时候它的授权页面可能是这样的(反正两种我都见过):
然后会自动跳转回来,跳转回来会显示“已获取onedrive授权”:
获取完授权后就可以开始上传了。
注意:目前上传到OneDrive只返回直接链接(即不是markdown格式,你设置markdown格式也不返回markdown格式),原因是OneDrive只有个人收费版可以用于Markdown链接的,而其它无论是企业版/教育版都只能得到一个共享链接,这个链接在浏览器可以打开但不能用于markdown里(详见这里)。
目前我还不知道个人收费版返回的分享链接是怎样的,如果有人有,并且你想使用我这个PicUploader上传图片到你的OneDrive,请在评论里联系我,我给你匹配一下返回markdown格式。
我的是个人收费版
那你需要用吗?如果我要测试,肯定要账号密码才能测试,不过估计也不太方便,毕竟个人版有自己的个人文件。