写在前面
部署本项目需要有一定的linux基础,以及对onedrive api以及refresh_token有一定了解,需要耐心!当然你也可以选择更为简单的OneManager
开始前准备 GitHub
一台linux机器,一个cloudflare账号以及onedrive账号
获取client_id和client_secret(本文不详述)
获取refresh_token(采用rclone获取,当然你也可以使用这个小工具或者这个)
安装rclone并配置具体配置方式不详述
编辑/root/.config/rclone/rclone.conf文件
##找到类似下面文件
[xxxx]
type = onedrive
client_id = 31370e70-7-4e9f-b342-4672c547a588
client_secret = JVlM~0qPxvBAy6U26-J_QMI0x6S~p
region = global
token = {"access_token":"","token_type":"Bearer","refresh_token":"0.ASoAQU0A_On4akKn9Re3bNLvj3AONzEGd59Os0JGcsVHpYgqANU.AgABAAAAAAD","expiry":"2021-06-07T16:57:32.717928215+09:00"}
drive_id = b!uPvWl8_q_4Hv7BtuTipIveZuSGHl4jrMFkZAIkL6QZhjzmmSt3KT
drive_type = business
##其中【"refresh_token":】后,【,"expiry":】前为token,例如示例中token为0.ASoAQU0A_On4akKn9Re3bNLvj3AONzEGd59Os0JGcsVHpYgqANU.AgABAAAAAAD
配置CloudFlare
登录CloudFlare,进入任意一域名下,右侧栏(往下翻)会有ID(zone_id和account_id),复制:
创建worker并记录下名称(下面要用),保存并部署。
本地wrangler部署
安装依赖Node.js、npm
# Using Debian, as root
curl -fsSL https://deb.nodesource.com/setup_15.x | bash -
apt-get install -y nodejs
# Using Centos
# As root
curl -fsSL https://rpm.nodesource.com/setup_15.x | bash -
安装完成后可用npm -i来检查是否安装成功,出现下图即为正常。
拉取项目开始安装
cd
git clone https://github.com/spencerwooo/onedrive-cf-index.git
cd onedrive-cf-index
npm i @cloudflare/wrangler -g
npm install
# 使用 wrangler 登录 CloudFlare 账户
wrangler login ##根据提示输入y,复制链接授权
# 使用这一命令检查自己的登录状态
wrangler whoami
修改项目目录下的wrangler.toml
- name:worker 的名字
- account_id:账户 id
- zone_id:区域 id
创建 KV bucket并找到id,回到wrangler.toml,在kv_namespaces: 下填入id和preview id。
# 创建 KV bucket
wrangler kv:namespace create "BUCKET"
# 创建包括预览功能的 KV bucket
wrangler kv:namespace create "BUCKET" --preview
kv_namespaces = [
{ binding = "BUCKET", preview_id = "", id = "" }`
]
- preview_id = ""
- id = ""
修改src/config/default.js
- client_id:第一步申请的id
- base:你想要展示的网盘文件夹默认为/pubic,整个网盘填/
在KV中输入refresh_token
在./src/auth/onedrive.js里面加一个获取 refresh_token 的代码:
// ./src/auth/onedrive.js
// ...
export async function getAccessToken() {
const timestamp = () => {
return Math.floor(Date.now() / 1000)
}
const refresh_token = await BUCKET.get('refresh_token') ##添加这一行!!
// 之后所有的 config.refresh_token 都直接改为 refresh_token
// ...
}
把其他原有定义了 REFRESH_TOKEN 的地方删掉(./src/config/default.js里的 refresh_token: REFRESH_TOKEN这一行)
添加client_secret
wrangler secret put CLIENT_SECRET
根据提示输入第一步申请的SECRET
正式部署
wrangler publish
enjoy!访问刚刚在 cf 添加的二级域名即可。
修改样式(可选)
src/render/htmlWrapper.js
: 修改标题
src/folderView.js
: 修改介绍