type
status
date
slug
summary
tags
category
icon
password
Last edited time
Aug 23, 2023 03:56 PM
准备概要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
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F63e984da-ef95-46e2-a1c8-c7914d5ef880%2FUntitled.png?table=block&id=bc71fc9b-8a28-46f2-8525-fd0690803793&t=bc71fc9b-8a28-46f2-8525-fd0690803793)
获取你的 client id 与 secret
- 获取Client id
你的应用 (client) ID 就是 api.config.js 里的 clientId ,它应该出现在 Overview → Essentials。
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F539b3213-df36-4ac9-b530-12e0c5bf135b%2FUntitled.png?table=block&id=133c7a33-ae8b-4ade-89f3-f37901527c9d&t=133c7a33-ae8b-4ade-89f3-f37901527c9d)
- 获取client secret
详细步骤:
1. 点击 Certificates & secrets。
2. 点击 New client secret。
3. 创建一个新 secret ,描述为 client_secret。
4. 将 Expires 设置为 Custom。
5. 将 Start 与 End 设置为能设置的最长时间。
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Ff4bd974d-6cc2-4f01-9982-ef9e731277fe%2FUntitled.png?table=block&id=140b4958-360b-41bc-9ae7-22e072be187b&t=140b4958-360b-41bc-9ae7-22e072be187b)
最后,点击 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。
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F9c8d5b44-7b3c-4837-a915-582ce791f56e%2FUntitled.png?table=block&id=08f355c4-b39b-467f-9cd1-0fc2d956b28b&t=08f355c4-b39b-467f-9cd1-0fc2d956b28b)
现在已经获得了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到自己的仓库以便于后续的配置。
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F2b643f8b-7d97-410e-b064-29e4810a5f7c%2FUntitled.png?table=block&id=e79bca42-1403-424f-9986-57595b85e2cf&t=e79bca42-1403-424f-9986-57595b85e2cf)
进入刚刚Fork的项目,按照图中的目录找到site.config.js,打开并且编辑它。
根据自己的实际情况更改图中的两个配置。
- userPrincipalName - 是用来在 OAuth 步骤时认证你的个人信息的。通常是你的 微软账户邮箱 。
- baseDirectory - 是你要分享的 OneDrive 目录。你必须保证此目录有效且与此参数一致。(你可以直接在 OneDrive 内创建一个叫做 Public 文件夹,并将此项设置为 /Public。) (其他的配置后续会提及有何作用。)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F98277204-4754-49a4-a0c2-24e6a902ef67%2FUntitled.png?table=block&id=4f908e8f-74e6-4855-89ad-31f97522f05b&t=4f908e8f-74e6-4855-89ad-31f97522f05b)
点击绿色的按钮提交刚刚修改的代码。
到这里,你就完成了项目的配置。但是如果你是世纪互联用户,也就是我们常说的微软国内版用户,你还需要进行额外的配置,详见。
Vercel 配置
- 新建项目
新建刚刚导入fork的项目,点击import
- 部署
点击部署,Vercel 将会下载你的项目并进行部署。这次部署有可能会失败,这是因为我们还没有设定 REDIS_URL 环境变量。
- 连接到 Redis
打开网站Upstash(https://vercel.com/integrations/upstash),注册并绑定。
点击Add integration添加集成环境,按照提示操作即可,项目依然选择刚刚Fork的项目。
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F82ace276-12c4-45eb-98f7-bb4823a019f0%2FUntitled.png?table=block&id=a159e440-4e4d-4af2-be42-63cc29437963&t=a159e440-4e4d-4af2-be42-63cc29437963)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fdc3be243-0253-47a1-a8f7-d8b6ae6d7c99%2FUntitled.png?table=block&id=798d5045-0d84-4bab-bd0e-8ec45c499071&t=798d5045-0d84-4bab-bd0e-8ec45c499071)
添加Redis和Kafka
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F3d90dc5d-cca1-46fa-922d-37cfea9d9596%2FUntitled.png?table=block&id=61883b70-5c6f-40cf-9f6f-43da079ac6a4&t=61883b70-5c6f-40cf-9f6f-43da079ac6a4)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fadfd1b4c-7a6c-4f63-aa0a-2cd5b4d746d6%2FUntitled.png?table=block&id=57b4da84-26da-4181-9a07-e6a1ee05c45e&t=57b4da84-26da-4181-9a07-e6a1ee05c45e)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F3c425633-add1-4a43-ad7f-43e7aa7067b6%2FUntitled.png?table=block&id=f28b6c35-7c4d-436e-8ad5-7bc50465d7dc&t=f28b6c35-7c4d-436e-8ad5-7bc50465d7dc)
- 完成后可以在Vercel后台看到已经集成好的环境。
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fe2422f05-0e61-408b-a853-ff1f88cb0502%2FUntitled.png?table=block&id=2997be4d-df93-4c66-b2d0-de603aed9ad1&t=2997be4d-df93-4c66-b2d0-de603aed9ad1)
- 最后在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项目。
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F16d5f78e-213c-45b0-bb2f-ab7ddb7b6901%2FUntitled.png?table=block&id=829485ca-d830-4605-bc58-ef33e3bb9a37&t=829485ca-d830-4605-bc58-ef33e3bb9a37)
- 单击继续,然后重定向,填写授权码,继续
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F5f386786-8073-4b80-8cf2-ac6698b1385b%2FUntitled.png?table=block&id=87bf023c-f395-46e8-a5bf-485f5f89e507&t=87bf023c-f395-46e8-a5bf-485f5f89e507)
重定向图,打不开不要紧,复制地址栏中code=后面的内容
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Feddc4a7d-2662-4693-896e-50353f4576fa%2FUntitled.png?table=block&id=94835c5d-7d2e-40b9-b92c-ffd5999fec4e&t=94835c5d-7d2e-40b9-b92c-ffd5999fec4e)
- 获取访问和刷新令牌
获取的access_token:EwBgA8l6BAAUAOyDv0l6PcCVu89kmzvqZmkWABkAAeZfICrISj3Q64I82OwY...
获取的refresh_token:M.C106_BL2.-CWhs4H7rf2qVgMQgWWB!mV8gbtjwvUUZEQu0SbomZL2ptH...
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F844f71c0-ea29-43d5-a176-0fdb39939ecb%2FUntitled.png?table=block&id=b663a46b-622f-4c02-8db9-c757ccb42e80&t=b663a46b-622f-4c02-8db9-c757ccb42e80)
- 安装完成后,你将会跳转到你全新的 onedrive-vercel-index,效果如下:
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fca620014-65d7-491b-b167-fb9ab32880fe%2FUntitled.png?table=block&id=b7ac94b5-4dba-43bb-b6aa-0584a92bc08d&t=b7ac94b5-4dba-43bb-b6aa-0584a92bc08d)
个性化配置
你可以在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:
网盘扩容:
- 作者:ORFW
- 链接:https://www.orys.link/article/op
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章