"状态 开发实现方面已经完成,正式发布! 如果你想开发客户端,请参考[链接] B3log 构思 [链接]目前已经基本实现, [链接]、[链接] 和[链接]已经可以进行帖子、回帖内容交互: 使用博客发布文章、评论会自动推送到黑客派社区 在黑客派社区上发布帖子、回帖也会自动推送到博客 这样可以为博主带来更多的关注和互动。 内 .."

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

状态

B3log 构思

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

这样可以为博主带来更多的关注和互动。

内容 API

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

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

账号关联

如果一切顺利,你的博客账号和社区账号就自动设置了相同的用户名和 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"
    }
}

博客发布评论推送社区

调用地址

参数

在 POST body 中指定 JSON 格式的实参:

{
    "comment": {
        "id": "1165070220000", 
        "parentId": "", 
        "articleId": "1164070220000", 
        "content": "Test comment", 
        "authorName": ""
    }, 
    "client": {
        "title": "我的个人博客", 
        "host": "http://xxx.com", 
        "name": "Solo", 
        "ver": "3.0.0", 
        "userName": "88250", 
        "userB3Key": "xxxx"
    }
}

社区发布 / 更新帖子推送博客

接收文章的接口由博客实现,这里给出的是社区去调用时候的规范。

调用地址

参数

在 POST body 中指定 JSON 格式的实参:

{
    "article": {
        "id": "", 
        "title": "", 
        "content": "", 
        "contentHTML": "", 
        "tags": "tag1,tag2,tag3"
    }, 
    "client": {
        "userName": "", 
        "userB3Key": ""
    }
}

注意:从社区同步帖子到博客时,收文接口实现文章保存后不能再走同步回社区的逻辑。

社区发布回帖推送博客

接收评论的接口由博客实现,这里给出的是社区去调用时候的规范。

调用地址

参数

在 POST body 中指定 JSON 格式的实参:

{
    "comment": {
        "articleId": "", 
        "parentId": "",
        "content": "", 
        "contentHTML": "", 
        "authorName": "", 
        "authorURL": "", 
        "authorAvatarURL": "", 
        "isArticleAuthor": true, 
        "time": 1457784330398
    },
    "client": {
        "userName": "",
        "userB3Key": ""
    }
}

注意:从社区同步评论到博客时,收评接口实现评论保存后不能再走同步回社区的逻辑。

使用须知

从博客同步文章到社区请注意如下规则:

已接入的博客系统

  • 系统公告

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

    37 引用 • 3240 回帖 • 667 关注
  • Rhy
    1 引用 • 148 回帖
  • Sym

    Sym 是一个用 Java 实现的现代化社区(论坛 / 社交网络 / 博客)平台,“下一代的社区系统,为未来而构建”。黑客派就是使用该系统搭建的 ❤️

    405 引用 • 4031 回帖 • 644 关注
  • B3log

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

    1995 引用 • 3596 回帖 • 601 关注
144 回帖   
请输入回帖内容...
  • someone1101

    string(99) "{"succ":true,"sc":"[article.title] length should be [1, 32]","msg":"Post an article successfully"}"

    你这个标题限制太短了,英文的随随便便都超了

  • someone1101

    []1457776732583

    其实到现在还有一部分主机不支持 PUT 的,只能 GET / POST……

  • 88250

    @zsx

    1. IP 和 UA 不给应该问题不大,毕竟不是关键信息,我们先把基础建立好,后期完善时再添加 ~
    2. 文章标题的长度限制确实短了点,会调整为 [1, 128]
    3. 社区的 API 都是 POST 的
  • someone1101

    @88250 那台主机的 IIS 日志:
    2016-03-12 09:46:45 W3SVC173 xxxxxxxx PUT xxxxxxxxxxxx action=comment 80 - 121.40.*. 阿里云的某 IP Java/1.7.0_80 403 1 0 1592 560

    我不是写 Java 的不可能有 Java 日志,那只能是同步过来的嘛……

  • 88250

    @zsx 确实是我的错,不好意思啦,马上修正 ~

  • someone1101

    @88250 话说一定要 Tags 标签真的大丈夫吗

  • someone1101

    @zsx 去掉“标签”

  • 88250

    @zsx 传“分类”过来也行,不过这个的确应该是个可选参数,不传也行。我马上调整一下 ~

  • someone1101

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

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

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

  • someone1101

    @88250 服务器回传时要不要把【是否该网站站长】这个值也一并传入,这样也方便做身份验证。以及,我认为把服务器接到评论时的时间也写入 api 更好,保证双方时间一致性。

  • 88250

    @zsx

    1. API 校验出错后的返回 succ 字段的值会调整为 false
    2. 调用博客同步评论时的 UA 已加入 B3log Symphony/{ver}
    3. 正文的 MD 处理的确有一些问题,后续会尽力完善
    4. 传入邮箱了,因为社区这边不能确切知道是不是博客站长,这个判断逻辑上走不通
    5. 评论时间这个估计是一致不了的,社区这边是异步处理,会存在一定延时

    多谢达达指出这么多问题,我马上部署一版看看 ~

  • someone1101

    @88250 这个还是可以判断的,根据实现来看的话我觉得是不是可以让isAdmin = 楼主.id == 回帖人.id
    时间上我主要是考虑到如果评论多了,hacpai 服务器堵塞住了的话,取到的当前时间可能和评论发出的时间有较大距离

  • 88250

    @zsx 哦,我明白了,这样的确可以判断。好的同步至博客的 API 里面我加一个字段 isArticleAuthor 来说明,时间字段也加上了,你看下该帖正文。

    社区服务已经重新部署好了,麻烦帮忙验证一下 🍇

  • 88250

    @zonghua @DT27

    两位,评论的 API 有细节调整,请参考一下正文中的格式,主要是社区同步评论调用博客接口时 comment 结构加了两个字段,分别用来标识是否该评论人是贴主,以及评论时间毫秒。

  • someone1101

    1457785483188

    time == 0??

  • 88250

    @zsx 其他的都 OK 了吗?这个字段我再检查一下

  • zonghua  

    1457788265865

    有没有人再写一个更好一点的 Wordpress 插件呢

  • zonghua  

    @zonghua 我得写个操作面板

  • 88250

    @zonghua 暂时没有了,你一定要加油!

  • imlonghao  

    挺好的,打算把自己博客的 Disqus 去掉然后自己写一个然后对接社区

  • 88250

    @imlonghao 你的博客是什么系统?

  • imlonghao  

    @88250 Pyth9n 自己写的,没有什么系统

  • 88250

    @imlonghao 哦,欢迎对接 ~

    有空的话帮忙抽象一下 [Python] 的 SDK,就是上面提到的 基础实现 部分 ~

  • itfanr  

    希望能写一个 hexo 插件。静态博客的市场还是不小的。再者,能不能提供让博主自己提交自己的博客或者博文地址。这样方便本社区抓取。

  • 88250

    @itfanr [Ghost] 、 [Hexo] 的插件都会有的 ~

  • itfanr  

    @88250 嗯嗯。 hexo 的用户量比较大。

  • 88250

    @DT27 @zonghua @zsx

    从社区同步评论到博客的时候,content 字段目前是 [Markdown] 格式的,是否需要处理成 [HTML] 格式?还是说再加一个 contentHTML 字段?

  • 88250

    @DT27 @zonghua @zsx

    从社区同步评论到博客的时候加了一些字段:

    • comment.contentHTML:评论内容, HTML 格式
    • comment.ua:User-Agent,可能为空字符串 ""
    • comment.ip:IP,可能为空字符串 ""
  • zonghua  

    @88250 好好好好,等我更信

  • zonghua  

    我上一个 wordpres 的演示站点

  • DT27  

    @88250 有点纠结啊,你这意思是 comment.content 跟 comment.contentHTML 都会有内容,只是格式不一样?

  • 88250

    @DT27 嗯,如果博客评论不支持 MD,就用 HTML 格式吧

  • armstrong  

    @88250 话说这些 API 调用后返回状态是什么?有没重新投递的机制?

  • 88250

    @armstrong 调用后都会返回“成功”,没有重新投递机制,重投的话比如文章 API,如果带了一样的 id 过来,不存在就是 insert、存在就是 update

  • armstrong  

    @88250 所以如果网站临时 down 了,这段时间的评论就同步不过来了?有没主动拉评论的途径?另外楼层号怎么保持一致性?

  • 88250

    @armstrong 嗯,如果社区挂了,就没法保持同步了,只有下次博主更新文章时才有可能再次同步过来。评论的话就没办法了,楼层也不能保证一致。

  • zml2015  

    b3log 站内搜索有问题啊

    1 回复
  • 88250      

    你是说 solo 博客吧?solo 没有搜索功能,只有集成百度站内搜索,要放到网上才能用,本地环境用不了的。

    1 回复
  • zml2015        

    问一下有没有功能更强大一点的开源博客啊

    1 回复
  • 88250      

    [WordPress]

  • xuwangcheng14  

    @88250 怎么关闭同步功能?我不想我的博文被同步过来!

    1 回复
  • 88250      

    社区配置里面修改一下 B3 key

    2 回复
  • xuwangcheng14        

    好的

  • rossoneri        

    社区配置里面的 B3 key 是不让修改的,在草稿箱的文章都被同步过来了,这功能太蛋疼了

    1 回复
  • 88250      

    key 在社区可以修改的

    1 回复
  • rossoneri        

    我是在内网搭建的,给很多人建了账号,他们根本都没注册 hacpai 的账号,任何在 solo 发的文章都给自动同步到了这里:https://hacpai.com/member/haixue

    1 回复
  • 88250      

    你修改一下在社区的 key,都是用的管理员帐号同步的

    2 回复
  • haixue        

    嗯嗯,找到了,多谢了,已经停掉同步了,我觉得在发文章的时候可以给一个选项是否同步到 hecpai 会更好些

    1 回复
  • 88250      

    收到,下个版本改进

  • bozong        

    hello。大半年没来了。前几天还回忆这个社区的名字,没想起来

    1 回复
请输入回帖内容 ...