将Onedrive部署成网盘
date
Dec 30, 2021
方法一,部署到Vercel
缺点:Vercel容易抽风;速度有点慢,界面优雅的后果。
- 按照步骤,设置Onedrive。
- 打开 Mircrosoft Azure appRegistrations;
- 登录Microsoft账号;
- 创建名称,比如my-ondrive-vercel;
- 账户类型选择:“任何组织目录(任何 Azure AD 目录 - 多租户)中的帐户和个人 Microsoft 帐户(例如,Skype、Xbox)”
- 重定向URI选择web,后面填“https://heymind.github.io/tools/microsoft-graph-api-auth”(因为没有本地的node.js,所以只能依靠这个来网址获取token,所以这里填这个。
- 点击注册。
因为在git中默认设置的重定向URI是localhost, 因此这里最后还需再添加一行:http://localhost 不然就一直是404.(下次试试不用localhost)
- 在“概述”(Overview)中,获取“客户端ID”(client_id);
- “证书和密码”中,创建新客户端密码(只会显示一次,注意保存);
- 新建,说明中填:client_secret,期限设为最长的24个月(没有之前的从不了);
- 复制client_secret的“值”,并保存下来;
- API权限配置
- 点击 Microsoft Graph;
- 搜索offline_access, Files.Read, Files.Read.All, 勾选并更新权限。
- 获取TOKEN,最麻烦的一步。因为本地node.js环境,所以用了第三方的:
- 打开之前提到过的网站:https://heymind.github.io/tools/microsoft-graph-api-auth;
- 填入Client ID, 点击AUTHORIZE,获取Code;(这个网站下面的步骤走不下去了,因此)
- 在postman.com网站,下载Postman app安装;
- 在Workspace中,新建一个Request,选择PSOT,填入刚才的网址:https://heymind.github.io/tools/microsoft-graph-api-auth,点击Send;
- 选择 Body,然后选择 x-www-form-urlencoded;
- 天赋如下key以及value,然后点击send;获得access_token和refresh_token。
- folk spsencerwoo大神的仓库,然后
- 修改config/api.json中,client ID;
- 修改config/site.json中的网站相关信息;
- 在Vercel上部署。别忘了建立3个环境变量:REFRESH_TOKEN, ACCESS_TOKEN, CLIENT_SECRET.
方法二,部署到Cloudflare
缺点:除图片外其他格式的文件均不能预览,并且不能直接点击下一个来打开下一张图片;
后端设置
- 在Cloudflare建立Worker
- 登录 https://logi.im/fodi/get-code/ , 选择合适的版本;
- 点击前往登录,等待出现“无法访问此网站”后,复制浏览器链接;
- 回到第二步的网页,在“浏览器跳转地址”中填入复制的链接;
- 设置好展示的文件夹后(不设置就是全部显示),点击获取代码;
不知道为什么,我这里设置了子目录,但是没有成功……只能根目录分享
- 复制生成的代码,粘贴到Cloudflare中相应Worker中的“快速编辑”中。
前端设置
- 打开并Fork这个仓库;
- 打开index.html(只有这么一个文件)编辑;
- 在其中的SCF_GATEWAY项中,填入Cloudflare中相应Worker的地址;
- SITE_NAME中设置自己需要的网站名称,然后保存设置;
- 在Github的Settings中,将仓库名称更改为 自定义.github.io,这样的格式,然后点击Rename确认,使之可以公开访问;
- 还是在Settings页面,
下拉找到Source,将其值改为master branch(其实刚folk,不用改);
如果需要加密文件夹:
在某个文件夹下添加
.password
文件,里面写入密码,即可加密该文件夹。注意文件必须以 UTF8NoBOM
编码,且密码前后不能有空格或空行,Windows 下可通过以下方式生成:在待加密文件夹下按住
Shift
键的同时,鼠标右击文件夹空白处,选择 在此处打开 Powershell 窗口(S)
,接着执行以下命令,其中 1234
便是密码。'1234' | Out-File -FilePath .password -Encoding ascii -NoNewline