内容 API 开放,欢迎各位独立博客主进行连接

本贴最后更新于 1639 天前,其中的信息可能已经事过境迁

概述

该文档面向的是 B3log 分布式社区博客端节点开发者,如果你只是想开发链滴的客户端,请参考社区客户端 API 文档

B3log 构思

B3log 构思目前已经基本实现, SoloPipe链滴已经可以进行帖子、回帖内容交互:

  • 使用博客发布文章、评论会自动推送到链滴社区
  • 在链滴社区上发布帖子、回帖也可以推送到博客

内容 API

核心内容 API 一共有 2 个。前 2 个 API 由社区实现,提供给博客进行调用;后 2 个由博客实现,提供给社区进行调用:

  1. 博客发布/更新文章 -> 社区发布/更新帖子
  2. 博客发布评论 -> 社区发布回帖
  3. 社区发布/更新帖子 -> 博客发布/更新文章
  4. 社区发布回帖 -> 博客发布评论

其中 2、4 这两个 API 由 vcomment 组件实现。

账号关联

  • 博客通过社区账号登录初始化

如果一切顺利,你的博客账号和社区账号就自动设置了相同的用户名和 B3 Key 了,然后再完成 B3 同步设置就完成关联账号了。

关联账号的核心要义是博客端和社区端的 B3 Key 必须相同,因为后续的数据交互是通过 B3 Key 进行校验的。

API 规范

上面我们介绍了基本原理,下面介绍 API 细节。

博客发布/更新文章推送社区

发布文章和更新文章使用相同的 API,如果 article.id 已经存在则视为更新操作。

调用地址

参数

在 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:博客站点 URL
  • client.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 分钟

如果遇到不能同步的问题,请检查博客端日志。

  • 系统公告

    B3log 社区相关的重要公告,比如新特性上线,运营策略调整等。

    39 引用 • 3581 回帖 • 682 关注
  • Rhy
    1 引用 • 156 回帖
  • Sym

    Sym 是一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)系统平台。

    下一代的社区系统,为未来而构建

    524 引用 • 4601 回帖 • 700 关注
  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品:SymSoloVditor思源笔记

    1063 引用 • 3454 回帖 • 189 关注
3 操作
88250 在 2020-06-26 13:14:36 更新了该帖
88250 在 2020-03-31 11:57:02 更新了该帖
88250 在 2020-03-08 10:48:03 更新了该帖

相关帖子

优质回帖

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • 88250

    Hi,我们有一个用 React Native 写的客户端,不过目前没时间精力去维护了 😂 如果你想开发客户端,可以参考 https://hacpai.com/article/1488603534762 进行开发。

    1 回复
  • 其他回帖
  • DT27

    @88250 这是我接收到的社区同步到博客的数据:参数名跟你给的不一样,而且里面 content 是空的。email 也不对。

    {"client":{"key":"XXXXXX"},"comment":{"commentAuthorEmail":"DT27","content":"","commentAuthorURL":"https://dt27.org","commentAuthorName":"DT27","articleId":"1324"}}

  • 88250

    之前我们用 React Native 做过一个大概的,不过后来没有更新了。主要是因为:

    1. 我们精力有限,并且现在通过 PWA 已经基本能够实现 APP 的效果
    2. 我们提供 API,原生 APP 交给社区贡献者来做,这样才能将黑客派发展成一个优秀的开发者社区
  • someone1101

    @88250 api 出错时的返回值不太对劲,比如当 comment.articleId 为 null 时正常应该是类型不匹配返回错误,为一个不存在的 id 时返回文章不存在;article.tags 为""时返回未提交 Tags 的错误;这些都是返回 success 的有点坑。

    另外服务器的 User-Agent 是不是标明一下是 hacpai 会合适一点,用默认的 Java/1.7.0_80 总感觉很怪异。

    另外,正文里完整插件一节 Markdown 似乎没写好。

  • 查看全部回帖