1. 创建登录服务
注册并登录 Cloudflare。打开 Workers & Pages,创建一个 Worker,使用简单的 Hello World 模板,名称可以叫 mx-writing-auth。部署后记下它的 HTTPS 地址,例如 https://mx-writing-auth.你的子域.workers.dev。
打开 Worker 的代码编辑器,把仓库中的 worker.mjs完整复制进去并部署。服务只用于 GitHub 登录,网站仍由 GitHub Pages 托管。
2. 注册你自己的 GitHub App
用 Fexas25 登录 GitHub App 创建页面,填写:
- 应用名称:取一个尚未被使用的名称,例如
Fexas25 MX Writing。 - Homepage URL:
https://fexas25.github.io - Callback URL:你的 Worker 地址加
/callback。 - 保留用户令牌过期设置;不需要启用 Device Flow,也不需要设置 Setup URL。
- Webhook:取消勾选 Active。
- Repository permissions → Contents:选择 Read and write;Metadata 的只读权限保持默认。其余权限不需要开启。
- 安装范围:选择 Only on this account。
创建后,打开应用的 Install App,安装到自己的账号,选择 Only select repositories,仅勾选 Fexas25.github.io。这会允许该应用读取和更新这个仓库的内容。
3. 填入登录配置
在 GitHub App 的 General 页面找到 Client ID,再生成 Client secret。不用生成 Private key。
回到 Worker 的 Settings → Variables and Secrets,添加以下两个值并重新部署:
GITHUB_CLIENT_ID:Client ID,普通文本变量。GITHUB_CLIENT_SECRET:Client secret,类型必须选择 Secret。
密钥只填写在 Cloudflare 的 Secret 输入框,不要贴到聊天、网站代码或 GitHub 文件中。Worker 地址加 /health 显示 {"configured":true} 表示两个配置项已填入。
4. 连接写作页
把 Worker 的公开地址告诉我,我可以帮你完成这一步;或者自己编辑仓库的 editor-config.js,把 authOrigin 的空字符串改成你的 Worker HTTPS 地址(不要加 /callback),提交后等待网站部署。
5. 以后这样使用
打开写作页,点击“登录 GitHub”,在弹窗里授权。新内容填写后点击“发布到网站”;旧内容在列表里选择并点“打开修改”,改好后点“保存修改”。提交成功后等待 Pages 部署即可。
首次授权时,核对是你刚创建的应用和网站仓库。登录状态只留在当前页面的内存中;刷新、关闭或退出后重新登录。草稿会继续保留。如果远端文章有新修改,系统会提醒你先导出草稿再合并,不会直接覆盖。
如果登录弹窗没有打开,请允许本站弹出窗口;若提示没有仓库权限,请检查应用是否已安装到网站仓库,且 Contents 权限为读写。查看网站部署状态 →
