背景
现在很多人手头都一些资料需要分享给朋友下载,采用服务器自建的话成本太高,并且技术要求也不低.传统的FTP目前已经慢慢转换成了NAS,利用家里的宽带进行分享,数据的安全性高了一点,但是受限于宽带,并且常年必须开机才可以正常保障,流量大了,肯定会被撸死,另外私用云最好不要和共有云,一起使用就导致了采用NAS也不是个非常好的办法.本站曾经介绍了了利用Cloudflare解决Google Drive被墙后下载问题,采用的是CF+GD构建,那是因为GD被和谐,没有办法的办法,由于很多人没有VPS,本文介绍了一种基本无成本(时间不算)的下载站搭建方法,采用cloudfare作为web+onedrive(云存储)的方法,可以走CF的流量,可以直接走onedrive的流量,非常方便
目前类似的方法还有如下,基本也是0成本开搞,等到以后有时间再更吧
#FODI-支持cfworker|腾讯云函数|GitHub.io去部署,速度非常快 https://github.com/vcheckzen/FODI #演示 https://logi.im/fodi.html #OneManager-支持腾讯云函数|heroku部署 https://github.com/qkqpttgf/OneManager-php #演示地址heroku https://herooneindex.herokuapp.com/ #腾讯云函数SCF https://service-pgxgvop2-1258064400.ap-hongkong.apigateway.myqcloud.com/test/abcdef/ #OneDrive-Index-Cloudflare-Worker|支持cfworkers部署,本文介绍 https://github.com/heymind/OneDrive-Index-Cloudflare-Worker #演示 https://storage.idx0.workers.dev/
准备工作
自备一个cloudfare帐号,如果需域名绑定的话,点击这里注册:传送门,需要绑定域名或者简单布置cdn,可以看看这里:传送门
自备一个onedrive帐号: office365-E3|office365-E5|A1|A1P|个人版|商业版|只要有API权限的均可,也可以看看我刚写的这篇文章:传送门
安装教程
获取授权参数
去office365新建一个APP:传送门,点击帐号登录授权,点右上角新注册
重定向地址填这个[code]https://heymind.github.io/tools/microsoft-graph-api-auth[/code]
在 Certificates & secrets (证书和密码)面板创建一个新的 secret(密钥)
记住你的密码9Tw~kEIu1u~Z2Yg~xnJI4CQgt8h_iW4Gtt
在 API permissions 面板(API权限), 添加以下权限 offline_access, Files.Read, Files.Read.All,这里file.writer权限我没添加
在AI里面用Graph只看到Files.Read.All和user.read这两个全新
可以直接复制搜索,必须是委托的哈,没有委托的,只能等管理员同意了
添加完毕如下图
以上完成后,找个文本记录下你的客户端ID和secret
如下图为客户端ID
以上完成之后,点击这里,获取获取refresh_token参数:传送门
先点开第4,填写进入client id,点击获取,登录帐号,获取code,注意[code]scope中主要填写的为授权,如果是只做下载,如下权限即可,如果需要上传的权限,那么需要添加个Files.ReadWrite权限[/code]
获取到code之后会自动填到下面.下拉到下面,填入客户端ID(Client ID)和secret(Client Secret),点击获取
之后在浏览弹出来的文本
查找[code]refresh_token[/code],并复制内容保存,就是引号中的内容
#最后获取的
refresh_token
#应用程序(客户端) ID
client_id
#客户端密码
client_secret
至此,基本上已经获得了相关参数了,需要准备的参数如下,准备完成就可以到CF里面部署了
部署代码
点击这里获取部署代码:传送门
找个文本文档,存下当前文本,修改以下参数,保存一个文本
#第6-8行代码,填入上面保存的信息 "refresh_token": "", "client_id": "", "client_secret": "", #第13行代码,不修改的话需要在onedrive根目录下建一个相应的文件夹 base: "/Share" 修改为 base: "/" #第69-71行代码,选填,本项为访问验证 #false修改为true 代表启动验证 const AUTH_ENABLED = false# #用户名 const NAME = "admin" #用户密码 const PASS = "password"
到CFworker中部署
点击这里登录:传送门
点击相关域名-点击workers
管理,新账号可能是添加,具体请看这里:传送门
在旁边脚本一栏内,清空原有代码,将刚才复制保存的文本粘贴进来,保存部署即可,到这里基本部署完毕
右面,复制工具栏内的网址,就是你的访问地址,如果需要绑定域名的话,可以参考我以前的文章:传送门
演示一下
官方演示:https://storage.idx0.workers.dev/
本站演示:https://fragrant-queen-9c52.shikey.workers.dev/
域名绑定演示:https://od.shikey.cf/
视频教程:
故障排除
授权失败
首先必须要在365里面点击onedrive应用,如果没有,那么是无法建立成功的,但是APP可以创建,这会给很多人带来错觉
严格按照上面写的来授权,先创建APP的加工重定向网址填写好,之后再创建客户端ID|客户端密钥,给程序授权,最后按照授权网址一步一步来获取.
注意:客户端密钥创建的时候请选择1年,否则你的站跑起来会经常需要重新授权
在创建授权的时候,请清空浏览器登录记录,并选择高版本的浏览器,实在不行把URL重新定向换成127.0.0.1,在浏览器内搞定,新手不建议这样!
目录权限
错误如下
是因为没有把share目录去掉,具体看上面
CDN中转
使用域名绑定是走CDN最简单的办法,绑定后只需要开启cdn即可
另外一种是官方的办法
利用Cloudflare服务器中转OneDrive中文件的下载,以提高中国大陆的下载体验。已知问题,无法显示下载进度。 在配置中开启proxyDownload功能,在文件直链路径后面加?proxied立即开启,例如:https ://storage.idx0.workers.dev/Other/zero_file?proxie
还有在代码中修改,全站开启CDN,这个请自行研究
需要注意的是我感觉开了CDN速度可能会比原Onedrive会慢很多,所以建议还是不要开cdn,在域名绑定的时候把porxy关了比较好.
学习一下
获取不到code
Test