type
status
date
slug
summary
tags
category
icon
password
Last edited time
Aug 23, 2023 03:56 PM
 

准备

一个OneDrive账号(不管是个人账号还是E5账号;国际版还是世纪互联版都可以。世纪互联账号需额外配置) 一个Github账号 一个Vercel账号 一个域名(没有也无关紧要) 一个智慧的大脑

概要

  1. Fork 项目
  1. 将 site.config.js 里的 userPrincipleName 改为你的微软账户邮箱
  1. 将 site.config.js 里的 baseDirectory 修改为你要分享的文件夹路径
  1. 根据你的 OneDrive 版本示情况修改 api.config.js
  1. 将你的项目导入到 Vercel 并 添加 Upstash 插件 以更方便地设置 REDIS_URL 环境变量
  1. 部署

OneDrive配置

注册一个应用程序

打开以下链接:
Microsoft Azure App registrations( OneDrive 国际版、企业版与教育版,E5 订阅专用) Microsoft Azure.cn App registrations(OneDrive 世纪互联专用)
创建一个应用程序:
  1. 登入你的微软账户,点击 New registration。
  1. 输入一个名字,例如 my-onedrive-vercel-index。
  1. 将 Supported account types 设置为:
    1. OneDrive 世纪互联用户设置为 - 任何组织目录(任何 Azure AD 目录 - 多租户)中的帐户。
  1. 将 Redirect URI (optional) 设置为 Web(在下拉菜单里)以及 http://localhost
  1. 点击注册。

Register a new application

notion image

获取你的 client id 与 secret

  1. 获取Client id
    1. 你的应用 (client) ID 就是 api.config.js 里的 clientId ,它应该出现在 Overview → Essentials。
      notion image
  1. 获取client secret
详细步骤:
1. 点击 Certificates & secrets。 2. 点击 New client secret。 3. 创建一个新 secret ,描述为 client_secret。 4. 将 Expires 设置为 Custom。 5. 将 Start 与 End 设置为能设置的最长时间。
notion image
最后,点击 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
💡
现在已经获得了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
进入刚刚Fork的项目,按照图中的目录找到site.config.js,打开并且编辑它。
根据自己的实际情况更改图中的两个配置。
  • userPrincipalName - 是用来在 OAuth 步骤时认证你的个人信息的。通常是你的 微软账户邮箱 。
  • baseDirectory - 是你要分享的 OneDrive 目录。你必须保证此目录有效且与此参数一致。(你可以直接在 OneDrive 内创建一个叫做 Public 文件夹,并将此项设置为 /Public。) (其他的配置后续会提及有何作用。)
notion image
点击绿色的按钮提交刚刚修改的代码。
到这里,你就完成了项目的配置。但是如果你是世纪互联用户,也就是我们常说的微软国内版用户,你还需要进行额外的配置,详见

Vercel 配置

  1. 新建项目
    1. 新建刚刚导入fork的项目,点击import
  1. 部署
    1. 点击部署,Vercel 将会下载你的项目并进行部署。这次部署有可能会失败,这是因为我们还没有设定 REDIS_URL 环境变量。
  1. 连接到 Redis
    1. 打开网站Upstash(https://vercel.com/integrations/upstash),注册并绑定。
      点击Add integration添加集成环境,按照提示操作即可,项目依然选择刚刚Fork的项目。
      notion image
      notion image
      添加Redis和Kafka
      notion image
      notion image
      notion image
  1. 完成后可以在Vercel后台看到已经集成好的环境。
    1. notion image
  1. 最后在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 并重新部署这个实例。
 

网页安装

  1. 访问刚在vercel部署的 onedrive-vercel-index项目。
    1. notion image
  1. 单击继续,然后重定向,填写授权码,继续
    1. notion image
      重定向图,打不开不要紧,复制地址栏中code=后面的内容
      notion image
  1. 获取访问和刷新令牌
    1. 获取的access_token:EwBgA8l6BAAUAOyDv0l6PcCVu89kmzvqZmkWABkAAeZfICrISj3Q64I82OwY... 获取的refresh_token:M.C106_BL2.-CWhs4H7rf2qVgMQgWWB!mV8gbtjwvUUZEQu0SbomZL2ptH...
      notion image
  1. 安装完成后,你将会跳转到你全新的 onedrive-vercel-index,效果如下:
    1. notion image
 

个性化配置

你可以在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

相关链接

Reference:

网盘扩容:

 
Cloudflare实现内网穿透CSN的EDU邮箱申请
  • Twikoo
  • GitTalk
ORFW
ORFW
ORFW的博客,用知识和技术创造未来!!!
公告
type
status
date
slug
summary
tags
category
icon
password
Last edited time
Dec 29, 2023 02:24 PM
🎉OR科技,用心服务🎉
-- 分享知识,点亮生活 ---
路虽远行则将至
事虽难不为不成
为之则易不为则难
👏欢迎您的来访👏
-- 免责声明 ---
⚠️ 本站内容仅代表个人观点,可以转载,但请注明出处。 ⚠️ 本人分享内容仅供学习参考使用,请勿用于其他用途。