概述
该文档面向的是 B3log 分布式社区博客端节点开发者,如果你只是想开发链滴的客户端,请参考社区客户端 API 文档。
B3log 构思
B3log 构思目前已经基本实现, Solo、Pipe 和链滴已经可以进行帖子、回帖内容交互:
- 使用博客发布文章、评论会自动推送到链滴社区
- 在链滴社区上发布帖子、回帖也可以推送到博客
内容 API
核心内容 API 一共有 2 个。前 2 个 API 由社区实现,提供给博客进行调用;后 2 个由博客实现,提供给社区进行调用:
- 博客发布/更新文章 -> 社区发布/更新帖子
- 博客发布评论 -> 社区发布回帖
- 社区发布/更新帖子 -> 博客发布/更新文章
- 社区发布回帖 -> 博客发布评论
其中 2、4 这两个 API 由 vcomment 组件实现。
账号关联
- 博客通过社区账号登录初始化
如果一切顺利,你的博客账号和社区账号就自动设置了相同的用户名和 B3 Key 了,然后再完成 B3 同步设置就完成关联账号了。
关联账号的核心要义是博客端和社区端的 B3 Key 必须相同,因为后续的数据交互是通过 B3 Key 进行校验的。
API 规范
上面我们介绍了基本原理,下面介绍 API 细节。
博客发布/更新文章推送社区
发布文章和更新文章使用相同的 API,如果 article.id
已经存在则视为更新操作。
调用地址
- https://rhythm.b3log.org/api/article
- 使用 POST 方法
参数
在 POST body 中指定 JSON 格式的实参:
{
"article": {
"id": "1165070220000",
"title": "这是一篇测试文章",
"permalink": "/test-post",
"tags": "Sandbox",
"content": "上面请使用 Sandbox 作为标签。"
},
"client": {
"title": "我的个人博客",
"host": "http://xxx.com",
"name": "Solo",
"ver": "3.0.0",
"userName": "88250",
"userB3Key": "xxxx"
}
}
article.id
:博客的文章 id,如果该 id 文章在社区已经存在,则视为更新article.title
:文章标题article.permalink
:博客文章固定链接article.tags
:文章标签,英文输入状态的逗号分隔article.content
:文章内容,HTML 或 Markdown 格式client.title
:博客站点标题client.host
:博客站点 URLclient.name
:博客程序名client.ver
:博客程序版本号client.userName
:文章作者用户名client.userB3Key
:文章作者 B3 Key
博客发布评论推送社区
请参考 vcomment 文档。
社区发布/更新帖子推送博客
接收文章的接口由博客实现,这里给出的是社区去调用时候的规范。
调用地址
- 调用用户在 B3 设置的 "博客收文接口" 地址
- 使用 POST 方法
参数
在 POST body 中指定 JSON 格式的实参:
{
"article": {
"id": "",
"title": "",
"content": "",
"contentHTML": "",
"tags": "tag1,tag2,tag3"
},
"client": {
"userName": "",
"userB3Key": ""
}
}
article.id
:社区帖子 id,如果该 id 帖子在博客已经存在,则视为更新article.title
:帖子标题article.content
:帖子内容,Markdown 格式article.contentHTML
:帖子内容,HTML 格式article.tags
:帖子标签,英文逗号分隔client.userName
:帖子作者用户名client.userB3Key
:帖子作者 B3 Key
注意:从社区同步帖子到博客时,收文接口实现文章保存后不能再走同步回社区的逻辑。
社区发布回帖推送博客
请参考 vcomment 文档。
使用须知
从博客同步文章到社区请注意如下规则:
- 同步垃圾内容账号会被封禁
- 同步间隔不能小于 10 分钟
如果遇到不能同步的问题,请检查博客端日志。