第 6 节:Decap CMS 与 GitHub OAuth Worker
6.1 为什么要单独部署 OAuth Worker
你遇到过默认 Netlify OAuth 回调不可用问题(Not Found)。
因此项目采用自建方案:
ops/decap-oauth/worker.js处理 GitHub OAuthpublic/admin/config.yml指向你自己的base_url
这让登录链路完全可控。
6.2 CMS 配置(必须与项目一致)
public/admin/config.yml 核心段:
backend:
name: github
repo: adkeb/blog
branch: main
base_url: https://decap-github-oauth.xuyang020128.workers.dev
auth_endpoint: auth
6.3 Worker 环境变量与密钥
ops/decap-oauth/wrangler.toml 里是公开配置:
CMS_ORIGINGITHUB_REDIRECT_URIGITHUB_CLIENT_ID
密钥必须用 secret:
npx wrangler secret put GITHUB_CLIENT_SECRET
npx wrangler secret put OAUTH_STATE_SECRET
注意:GITHUB_CLIENT_SECRET 绝对不能写入 git。
6.4 Worker 路由逻辑(读懂就够,不用会写)
worker.js 做两件事:
/auth:发起 GitHub 授权/callback:换 token 并回传给 Decap 窗口
你项目中还做了弹窗握手与 postMessage 回传,解决了“登录成功但 CMS 不更新”的常见问题。
6.5 部署命令(完整)
cd ops/decap-oauth
npx wrangler whoami
npx wrangler deploy
部署成功会返回你的 workers.dev 地址。
6.6 验收标准
- 打开
https://www.xuyangfly.site/admin - 点“使用 GitHub 登录”
- 授权后可进入 CMS 内容列表
- 新建文章后能触发 Git 提交