decap cms不支持gitee的api
gitee也不支持oauth pkce拓展,在不动代码的情况下是不可能直接使用的。
第一步,decap cms编译
gitee地址 decap-cms
github地址 decap-cms
该项目实现了gitee的发布文章API, gitee的oauth2流程。
代码由ai编写,人工测试,目前已测试登录发布文章相关功能。
使用npm run build 完成编译。
在 packages/decap-cms/dist中可以找到编译后的decap-cms.js
第二步,decap cms配置
Decap CMS 配置
|
|
index.html引用新生成的decap-cms.js
|
|
第三步,OAuth2的处理
OAuth应用的创建官方已经有详尽文档 gitee oauth 文档
权限至少要选择: user_info projects pull_requests
目前gitee不支持pkce, 仅支持授权码模式, decap-cms走pkce流程不通。
但pkce本质是授权码模式的拓展,oauth前几步包含了授权码模式的所有参数, 只不过换token时需要client secret.
因此这里做了一个简单的代理,核心逻辑就是 调用 oauth/token这一步时,将client secret一并送到gitee。
相关代码在 tool/main.go 中。
首先修改secret=“YOUR_CLIENT_SECRET”,填写自己的client secret.
使用 /PATH/TO/GOBIN/go run tool/main.go 运行代理服务
最后,创建一个入口nginx反向代理
decap cms的配置中,base_url 指向该nginx代理服务
|
|
完成这些后,即可运行
运行后,点击 login with gitee,即可跳转进gitee登录,登陆后回调到你的decap cms地址即可完成授权。
授权后,会进入后台页面,你可以编写文章、上传图片资源等。
再次强调,decap cms的config中base_url是你的nginx代理地址, oauth会通过base_url进行。
未尽事宜
目前流程中,/gitee-proxy/oauth/token接口 无论何种请求,都会带上client secret, 可能存在安全隐患。
任何人都可以通过前端拿到你的client key, 调用/gitee-proxy/oauth/token自动添加了client secret,等于说对任何人来讲,只需要一个授权码就可以拿到你的access token。
不过换授权码这一步需要gitee登录,整个流程还有这一层保护。
Use at your own risk