Last edited time
Aug 23, 2023 03:58 PM
password
AI summary
type
status
date
slug
summary
tags
category
icon
准备概要OneDrive配置注册一个应用程序Register a new application获取你的 client id 与 secretAPI permissions修改 api.config.jsGithub配置Vercel 配置网页安装个性化配置相关链接Reference:网盘扩容:
准备
一个OneDrive账号(不管是个人账号还是E5账号;国际版还是世纪互联版都可以。世纪互联账号需额外配置)
一个Github账号
一个Vercel账号
一个域名(没有也无关紧要)
一个智慧的大脑
概要
- Fork 项目
- 将 site.config.js 里的 userPrincipleName 改为你的微软账户邮箱
- 将 site.config.js 里的 baseDirectory 修改为你要分享的文件夹路径
- 根据你的 OneDrive 版本示情况修改 api.config.js
- 将你的项目导入到 Vercel 并 添加 Upstash 插件 以更方便地设置 REDIS_URL 环境变量
- 部署
OneDrive配置
注册一个应用程序
打开以下链接:
Microsoft Azure App registrations( OneDrive 国际版、企业版与教育版,E5 订阅专用)
Microsoft Azure.cn App registrations(OneDrive 世纪互联专用)
创建一个应用程序:
- 登入你的微软账户,点击 New registration。
- 输入一个名字,例如 my-onedrive-vercel-index。
- 将 Supported account types 设置为:
OneDrive 世纪互联用户设置为 - 任何组织目录(任何 Azure AD 目录 - 多租户)中的帐户。
- 将 Redirect URI (optional) 设置为 Web(在下拉菜单里)以及 http://localhost。
- 点击注册。
Register a new application

获取你的 client id 与 secret
- 获取Client id
你的应用 (client) ID 就是 api.config.js 里的 clientId ,它应该出现在 Overview → Essentials。

- 获取client secret
详细步骤:
1. 点击 Certificates & secrets。
2. 点击 New client secret。
3. 创建一个新 secret ,描述为 client_secret。
4. 将 Expires 设置为 Custom。
5. 将 Start 与 End 设置为能设置的最长时间。

最后,点击 Add ,然后复制 client_secret 的值并妥善保管。(只有一次复制机会)
API permissions
Microsoft Graph API 可以设置 API 范围,我们只需要以下三个( api.config.js 里要求的):
点击 API permissions,再点击 Microsoft Graph,再点击 Delegated permissions,然后搜索:
- User.Read(这应该一开始就勾上了)
- Files.Read.All
- offline_access
选择全部三个并点击 Add permissions。

现在已经获得了clientId 与 clientSecret
CLIENT_ID | d87bcc39-1750-4ca0-ad54-f8d0efbb2735 |
CLIENT_SECRET | U2FsdGVkX1830zo3/pFDqaBCVBb37iLw3WnBDWGF9GIB2f4apzv0roemp8Y+iIxI3Ih5ecyukqELQEGzZlYiWg== |
修改 api.config.js
将 clientId 修改为你自己的 clientId,但是,client secret 需要保密,需要在下面进行 AES 加密:
填写 client secret 后,你应该得到一个长得像这样的字符串:
U2FsdGVkX1830zo3/pFDqaBCVBb37iLw3WnBDWGF9GIB2f4apzv0roemp8Y+iIxI3Ih5ecyukqELQEGzZlYiWg==
将它替换到 obfuscatedClientSecret 里。
Github配置
打开onedrive-vercel-index项目的Github链接,点击Fork,将它Fork到自己的仓库以便于后续的配置。

进入刚刚Fork的项目,按照图中的目录找到site.config.js,打开并且编辑它。
根据自己的实际情况更改图中的两个配置。
- userPrincipalName - 是用来在 OAuth 步骤时认证你的个人信息的。通常是你的 微软账户邮箱 。
- baseDirectory - 是你要分享的 OneDrive 目录。你必须保证此目录有效且与此参数一致。(你可以直接在 OneDrive 内创建一个叫做 Public 文件夹,并将此项设置为 /Public。) (其他的配置后续会提及有何作用。)

点击绿色的按钮提交刚刚修改的代码。
到这里,你就完成了项目的配置。但是如果你是世纪互联用户,也就是我们常说的微软国内版用户,你还需要进行额外的配置,详见。
Vercel 配置
- 新建项目
新建刚刚导入fork的项目,点击import
- 部署
点击部署,Vercel 将会下载你的项目并进行部署。这次部署有可能会失败,这是因为我们还没有设定 REDIS_URL 环境变量。
- 连接到 Redis
打开网站Upstash(https://vercel.com/integrations/upstash),注册并绑定。
点击Add integration添加集成环境,按照提示操作即可,项目依然选择刚刚Fork的项目。


添加Redis和Kafka



- 完成后可以在Vercel后台看到已经集成好的环境。

- 最后在Vercel的Deployments页面中点击 Redeploy即可完成。
至此,所有内容已准备就绪
本项目还没有设置有效的 access_token 和 refresh_token,需要进行授权。在继续对 onedrive-vercel-index 授权你的 Microsoft 帐号前,请检查一下下方的配置信息。
CLIENT_ID | d87bcc39-1750-4ca0-ad54-f8d0efbb2735 |
CLIENT_SECRET | U2FsdGVkX1830zo3/pFDqaBCVBb37iLw3WnBDWGF9GIB2f4apzv0roemp8Y+iIxI3Ih5ecyukqELQEGzZlYiWg== |
REDIRECT_URL | |
AUTH API URL | |
DRIVE API URL | |
API SCOPE | user.read files.read.all offline_access |
如果你看到有遗漏或错误的项目,你需要重新编辑 /config/api.config.js 并重新部署这个实例。
网页安装
- 访问刚在vercel部署的 onedrive-vercel-index项目。

- 单击继续,然后重定向,填写授权码,继续

重定向图,打不开不要紧,复制地址栏中code=后面的内容

- 获取访问和刷新令牌
获取的access_token:EwBgA8l6BAAUAOyDv0l6PcCVu89kmzvqZmkWABkAAeZfICrISj3Q64I82OwY...
获取的refresh_token:M.C106_BL2.-CWhs4H7rf2qVgMQgWWB!mV8gbtjwvUUZEQu0SbomZL2ptH...

- 安装完成后,你将会跳转到你全新的 onedrive-vercel-index,效果如下:

个性化配置
你可以在site.config.js中自定义你的网站,下面摘录了官方文档的部分设置。
使用密码保护你的文件夹,你可以创建一个需要密码才能访问的文件夹。
- 步骤 1. 在 config/site.json 的 protectedRoutes 处添加要保护的文件夹。 2. 在要保护的文件夹下创建一个名为 .password 的 空白文件。 3. 使用任意文本编辑器打开这个 .password 文件,并在里面填写该文件夹的访问密码。 4. 在 Vercel 中重新部署该项目。
- 设置受密码保护的文件夹 受密码保护的文件夹主要由 config/site.json 中的 protectedRoutes 属性指定,举个例子 👇
目录结构
.
├── 📕 Books
│ └── ...
├── 🌞 Private folder
│ ├── this-is-public
│ └── u-need-a-password <-- 你想要用密码保护这个文件夹
- 我们想要将 /u-need-a-password 设为受密码保护的文件夹,就把它的绝对路径按下列格式填写到 protectedRoutes 里:
如果你想设置另一个受密码保护的文件夹,那就在下一行按下列格式添加它的绝对路径:
如果你没有任何受密码保护的文件夹,那么就添加一个 [] 以关闭此功能:
在上述添加的受密码保护的路径的根目录下内创建一个 .password 文件,该文件内的纯文本内容就是你访问该文件夹时需要的密码。参考:protected-folders
相关链接
项目地址:https://github.com/spencerwooo/onedrive-vercel-index
官方文档:https://ovi.swo.moe/zh/docs/getting-started
Reference:
网盘扩容:
- 作者:迷途
- 链接:blog.ortech.us.kg/article/one
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。