之前写过一个基于腾讯云 SCF 的 OneDrive 列表程序 FODI,现在腾讯云要收费了,每月至少 8 毛钱,虽然不多,但既然 Cloudflare 仍是免费的,不如移植一下,反正只是改改入口。
突然白屏
refresh_token
有效期 3 个月,如突然无法打开,请 重设后端代码。
迟到的自动续期
之前,FODI 每过 3 个月要重设后端代码,原因是 Cloudflare Worker 是 Serverless 环境,不支持持久化存储。刚编写 FODI 时,Cloudflare KV 还处于收费状态,如果使用第三方免费存储则担心可用性和延迟问题。考虑过使用 CI 定时更新环境变量但一直没有动工,想着整体重构后一并添加。但现在重构意愿不强了,Cloudflare KV 免费服务也已推出一段时间,于是添加几句代码,让它支持 Token 自动续期。
重设后端代码
首先,打开 部署助手,按照页面上方步骤重设 Worker 代码。
创建 KV 命名空间
保存好代码后,切换到顶部菜单栏的 KV
标签。在 命名空间名称
下方的输入框中输入 FODI_CACHE
,随后点击右边蓝色的 添加
按钮。
在 Worker 中绑定 KV
转到 FODI Worker 脚本的 设置
页面,点击页面中部 KV 命名空间绑定
项目右侧的 添加绑定
按钮。
在 变量名称
下方的输入框键入 FODI_CACHE
,KV 命名空间
下拉框也选择 FODI_CACHE
,最后点击 保存
。
添加续期计划任务
转到设置左边的 触发器
面板,点击页面右边蓝色的 添加 Cron 触发器
按钮。
切换到 添加 Cron 触发器
项目的 Cron
标签,在 Cron 下方输入框键入 0 0 1 * *
,最后点击右下方蓝色的 Add Trigger
按钮。
验证 Token 是否保存
现在打开你的 FODI 前端等待网页列出文件后,再次进入 KV
面板,点击页面中部 FODI_CACHE
右侧的 查看
。
当看到 token_data
时,表明代码工作正常,不出意外,以后都不再需要手动续期。
演示地址
注册 Cloudflare 并创建 Workers
打开 Cloudflare 注册页面,输入 邮箱
和 密码
后点击 Create Account
,进入下个页面后直接点击左上角的 CLOUDFLARE
图标进入控制面板主页,不要进行其他操作。
进入主页后,点击靠近右下角的 Workers
。
此时系统会建议你修改子域名,直接点击 Set up
,随后点击弹出对话框中的 Confirm
。
之后会进入套餐选择页面,页面往下拉,找到 Continue with free
,点击它。
完成上述步骤后,系统会发送确认邮件到你的注册邮箱,请自行登录邮箱,找到相关邮件,点击其中的确认链接,完成确认。
上传 FODI 后端
完成邮箱验证后,再次点击左上角的 CLOUDFLARE
图标进入控制面板主页,点击右下角的 Workers
。
现在点击页面中间你刚刚创建的函数,进入代码编辑界面,随后打开 FODI Deployment Helper,按照指引生成并复制代码,粘贴到下图的代码编辑器中。
填写完毕后,点击页面中下部的 Save and Deploy
。
部署 FODI 前端
前端部署方法和老文章相同,见 通过 Github Pages 部署前端 章节。
唯一不同的是 SCF 网关地址
要换成 Cloudflare 的,右击下图箭头,选择 复制链接地址
即可获得。
最后如果这个项目帮到了你,不妨到 Github 为我点颗星。
如有问题请在下方留言,文章转载请注明出处,详细交流请加下方群组!请大佬不要屏蔽文中广告,因为它将帮我分担服务器开支,如果能帮忙点击我将万分感谢。
感谢大佬,已经搭建成功,请问大佬有更新吗,其他都挺好,就是查看图片要一张张查看一张张关闭,是否可以添加个上一张下一张的切换按钮或者是缩略图。
我想自定id,在获取代码时候提示我需要单页面程序才能进行,换了后又提示没有设置回复url,不能登录,要怎么办@(笑尿)
那就设啊
我设置了回复url成单页面回复,但是点前往登录时候出错了,又提示没有设置回复url
注册web应用https://docs.microsoft.com/zh-cn/azure/active-directory/develop/scenario-web-app-sign-user-app-registration
完美可用,請問能嫖 office 365 開發者嗎?
https://logi.im/script/permanently-keeping-an-office-e5-account.html
大佬你好,我部署搭建好了。
直接浏览器下载没有问题,但是通过其他网页程序调用的时候出现了跨域错误。具体错误提示如下:
Access to XMLHttpRequest at 'worker转换的静态文件地址' from origin '请求域名地址' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
怀疑是跨域请求错误,尝试了多个解决办法无果。认为应该需要在worker脚本中添加允许跨域请求,请问大佬该怎么处理啊?
重设后端代码的网站已经403了
之前迁移了网站,现在好了
我靠,又发现了一位大佬@(笑眼)@(笑眼)
不是大佬#(害羞)
请问localhost拒绝连接是什么
不需要管,复制网址回到第一个页面粘贴,进行后续操作
https://logi.im/fodi/get-code/
ReplayURL(自定义 ID、SECRET 时,需要填写)
怎么填写
我按照您文章部署到Cloudflare,最后打开https://xxx.github.io,显示的是空白网页,现在不能用了吗?
有问题加文末群组
大佬,想问一下这个东西访问是不是会触发API,我可以用来续订E5试用订阅呢?只为了刷API是不是可以偷懒不配置前端呢
刷 E5 看我主页文章
大佬,感谢我已经架设好了,但是可以帮我看下为什么我的盘不显示大小,文件夹都是现实size:0kb
链接:https://pan.mcheng.cn/
onedrive登录出问题了!
出现问题
您请求的页面暂时不可用。对由此给您造成的不便,我们深表歉意,请几分钟后再返回查看。
博主 是不是 这个已经失效了?
我现在打开 就显示一个标题 没有内容了
(前段时间 还没有问题)
大佬,怎么添加多个onedrive盘
你好博主,我已经成功部署了FODI,但是我想更改域名有什么办法吗?我用CNAME发现并不能成功指向我的FODI
大佬怎么上传啊,为什么我打开后是空白
大佬,,上午用腾讯云部署,发现文件夹打不开,里面的内容不展示。换了 Cloudflare 后成功了,不知道什么原因。
为什么自己部署的打不开 要么翻山越岭要么使用光猫WiFi或者使用手机数据才能打开 而你的demo却能打开
你好,我这里使用cloudflare在设置后端获取网关时出现1101的报错
控制台报错如下
> `Uncaught (in response) TypeError: Cannot read property 'length' of undefined`
> `wor`ker.js:168 Uncaught (in promise) TypeError: Cannot read property 'length' of undefined`
`at fetchFiles (worker.js:168)`
at async handleRequest (worker.js:35)`
网盘里传个文件,如果代码开头的 '/Index' 没删,删掉它
已解决,感谢大佬!
同样碰到这个问题,上传个文件就解决了,感谢大佬!
楼主,能否支持用edu.cn的邮箱。我的学校的邮箱好像没有API,
https://www.onesrc.cn/p/onedrive-for-onepoint-configuration.html
我看这个链接有,可是不会弄,你写的这个能支持sharepoint吗?
抱歉,不会支持