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

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

概述

该文档面向的是 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 引用 • 3578 回帖 • 681 关注
  • Rhy
    1 引用 • 156 回帖
  • Sym

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

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

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

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

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

相关帖子

优质回帖

欢迎来到这里!

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

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

    想法不错

  • zempty 1

    其实我想问,在初始化 solo 帐号的时候用的是一个邮箱,后期通过修改数据库换成另外的邮箱,是否设置同步就没效了?

  • 88250

    @zempty 千万不要手动修改数据库....不然很多未知问题的

  • R 1

    搞一个 CSDN 这样的首页——全球最大 IT 和画家社区! 😄

  • 88250

    @R 要搞就搞全宇宙 😏

  • R

    @88250 宇宙人不用网络交流的,用脑电波直接发信号的

  • zempty

    @88250 遇到了,改了之后,之前的文章不能删除,同步功能失效。

  • 88250 1

    @zempty 社区这边的邮箱倒是可以改,管理员可改,你需要么?

  • zempty

    @88250 可以吗?帮我改为新的,不然我永远都无法从 solo 同步文章到社区了。怎样发私信啊?

  • 88250

    @zempty 到我的主页上面,然后头像下面

  • hfu946 1

    神奇的功能~

  • mainlove

    好 调一下

  • zonghua

    写个 Wordpress 的插件?

  • 88250

    @zonghua 我不会,你来帮忙么

  • 88250

    @mainlove Y,帮忙一下啊

  • zonghua

    @88250 若干小时后应该可以完成插件

  • 88250

    @zonghua 还有个收评论的接口我整理一下

  • DT27

    @88250 社区同步到博客的数据格式列一下~

  • 88250

    @DT27 @zonghua

    好的,稍后我整理一下博客收文章、更新文章、收评论的接口规范

  • ivan
  • ivan
  • 88250

    @ivan 嗯?

  • ivan 1

    @88250 试了下录音功能

  • zonghua

    @zonghua 都是 null

    `function post_article(post_id, post, $update){
    test($update);
    }

    function update_article(post_ID, post_after, $post_before){
    test($post_before);
    }
    `

  • 88250

    @zonghua 啥情况?

  • DT27

    @88250 就等博客接收数据的接口了。。。

  • 88250

    @DT27 好的,我今天内整理出来,发布的接口调试通了?

  • DT27

    @88250 写好了,还没测,调试方面不太会,只会上线实测。。。

  • 88250

    @DT27 你是担心发布测试数据到社区还是?

  • DT27

    @88250 是啊,感觉不太好 😆 ,要是没关系我就试试。

  • 88250

    @DT27 没关系的,随便测吧! 测试的时候加个 [Sandbox] 标签就行

  • DT27

    @88250 👌

  • 88250

    @DT27 收评的接口规范整理好了,你看下是否合理

  • DT27

    @88250 看到了,没问题。正在做。 后面考虑回复评论关联不 😂

  • 88250

    @DT27 回复评论关联是指的?

  • DT27

    @88250 比如社区里我回复你,博客里也同步为我回复你的评论。

  • 88250

    @DT27 哦,这个估计关联不了,因为两边评论数据的 id 是独立的,除非两边都存原始评论的 id

  • DT27

    @88250 嗯,明白了。

  • DT27

    @88250 帮我看下评论同步到博客。我直接用下面的 js 模拟是没问题的。但是从社区从不过去内容链接作者都是空白。。。

    $.ajax({
    type: "POST",
    url: "https://dt27.org/b3log-hacpai/comment",
    contentType: "application/json; charset=utf-8",
    data: '{"comment":{"articleId":"1324","content":"评论 test","authorName":"DT27","authorEmail":"dt27@dt27.org","authorURL":"https://dt27.org"},"client":{"key":"XXXXXXXX"}}',
    dataType: "json",
    success: function (message) {
    if (message > 0) {
    console.log(message);
    }
    },
    error: function (message) {
    console.log(message);
    }
    });

  • DT27

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

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

  • 88250

    @DT27 收到,明天早上看

  • zonghua

    @88250 wordpress 的插件

  • zonghua

    @88250 wordpress 的插件方法获取不到变量

  • 88250

    @zonghua 我不会玩 [WordPress] ..

  • 88250

    @DT27 评论发布客户端的接口应该修复了,请帮忙验证~

  • DT27 1

    @88250 没问题了。

  • 88250

    @DT27

    1. 博客同步内容到社区格式的问题等周末处理
    2. 评论从社区到博客后用户名和内容都变小写了,你那边特殊处理过么?
  • DT27

    @88250

    1. 好的。
    2. 确实是我处理过了,因为我这边获取时,我发现参数名区分大小写,然后之前从社区获取到的参数名都是小写的,所以就直接全部转为小写了,忘了还会影响内容了= =、马上修正。
  • someone1101

    同步回评论系统的时候不给 IP 和 User-Agent 合适吗?

请输入回帖内容 ...