前言

好久没有更新博客了,整个站疏于搭理,最近才刚刚发现之前接入的多言评论系统免费版植入了N多的广告。除此之外,也是一堆一堆的bug,总觉得自己的账号跟其他人的账号莫名其妙的绑定到了一起,头像很怪异,并且修改不了,各种个人设置也不能更新,用起来非常地不爽。然而国外老牌disqus国内始终不能使用。经过一番比较后,才发现有基于GitHub Issues的评论系统。感觉上这个还是会比较稳定的,也不会担心突然死掉。查了一下发现有GitmentGitalk可以使用。两者的star数差求不多,原理基本上是一样的,而Gitment有一年多没有更新维护了,看了下UI也比较丑,于是决定使用Gitalk。

安装

1.首先在GitHub上创建一个OAuth Application,必填项只需要注意Authorization callback URL填写为自己博客的域名即可,其他必选项随便填写,一路下一步。完成后保存好Client ID和Client Secret信息,后面要用到
9291561126998_-pic_hd
2.然后在GitHub上创建用来保存评论的Repo
3.在Ghost管理后台settings-design中下载当前的theme,解压后修改post.hbs文件,在post-full-comments位置添加如下代码:

<section class="post-full-comments">
    {{!-- gittalk --}}
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.css">
    <script src="https://cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.min.js"></script>
    <div id="gitalk-container"></div>
    <script>
        var gitalk = new Gitalk({
            clientID: '修改:之前保存的Client ID',
            clientSecret: '修改:之前保存的Client Secret',
            repo: '修改:之前创建的repo名称,注意是名称,不是repo地址',
            owner: '修改:GitHub的个人名称',
            admin: ['修改:GitHub的个人名称'], //这里可以填写具有写权限的用户名列表,用来初始化Issues的
            id: '{{comment_id}}',
            distractionFreeMode: false // Facebook-like distraction free mode
        });
        gitalk.render('gitalk-container');
    </script>
</section>

使用

这里需要注意的是,每发布一篇post,需要以owner的身份登录GitHub,并且访问post地址用来创建一个Issue,才能让其他人在post下评论。

更多自定义设置项,可以参考参数设置

关于使用风险

此评论插件需要将Client Secret暴露在前端,这是OAuth过程并不推荐的做法。由于OAuth还需要设置callback域名,对于域名的校验化解了这样的风险,因此安全性相对还好。在Gitment的README中也有相关的风险分析