博客添加评论功能

Posted by Dandan on June 15, 2023

前言

断断续续用github pages一段时间了,起初只是当个日记本用着,随便记录一下所感所想,没想着对外。后来一个朋友看了我的博客说缺点啥,作为一个博客,缺少了互动的界面,我想那应该是缺少评论功能吧,既然写到github上了,就不要怕被看到。

github注册OAuth apps 授权应用

  • 首先注册一个oauth app 用于调用github api。登陆登录 Github ,右键头像,在下拉菜单中,选择“Settings”选项

  • 在左侧菜单选择“Developer settings”选项,进入开发者页面

  • 选择 OAuth Apps ,并点击“New OAuth App”创建新授权应用

  • 设置该应用相关信息
    • Application name 应用名称
    • Homepage URL 博客主页
    • Authorization callback URL 授权回调页面(同 Homepage URL) 然后点击注册。
  • 生成 Client ID 和 Client secrets并保存,后续需要

  • 新创建一个仓库用于存储评论
    我的是https://github.com/LoveCPro/blog-comments.git

选用gitment

最开始搭建的是gitment,用了几天发现老是出问题,1/3几乎都用不了,网友说是作者很久已经没有维护了,不过也还是总结一下使用吧。

  • _config.yml配置 这个好像也不用配:
    gitment:
      oauth:
        clientID:    'your oauth client id'                       #生成的clientID
        clientSecret: 'your oauth client secret'    #生成的clientSecret
      repo: 'your comment github'    #仓库名称
      owner: 'your owner'    #github用户名
    
  • post.html配置
  <div id="gitmentContainer"></div>
    <link rel="stylesheet" href="https://imsun.github.io/gitment/style/default.css">
    <script src="https://imsun.github.io/gitment/dist/gitment.browser.js"></script>
    <script>
        var gitment = new Gitment({
        owner: 'your owner',
        repo: 'your comment github',
        oauth: {
            client_id: 'your oauth client id',
            client_secret: 'your oauth client secret',
            },
        });
    gitment.render('gitmentContainer');
    </script>

选用 gitalk

后来就决定用这个了。

  • _config.yml配置
gitalk:
  enable: true    #是否开启Gitalk评论
  clientID: XXXXXXX                          #生成的clientID
  clientSecret: XXXXXXXXXXXXXXX    #生成的clientSecret
  repo: XXXXX    #仓库名称
  owner: XXXXX    #github用户名
  admin: XXXXX
  distractionFreeMode: true #是否启用类似FB的阴影遮罩
  • post.html配置

    <!-- 引入Gitalk评论插件  -->
    <link rel="stylesheet" href="https://unpkg.com/gitalk/dist/gitalk.css">
        <script src="https://unpkg.com/gitalk@latest/dist/gitalk.min.js"></script>
        <div id="gitalk-container"></div>
        <!-- 引入一个生产md5的js,用于对id值进行处理,防止其过长 -->
        <!-- Thank DF:https://github.com/NSDingFan/NSDingFan.github.io/issues/3#issuecomment-407496538 -->
        <script src="/js/md5.min.js"></script>
        <script type="text/javascript">
            var gitalk = new Gitalk({
                clientID: 'c935bcc8e8c5050798ee',
                clientSecret: '9c6a78682bb78ff1afb339f6e77966fcd63f2433',
                repo: 'blog-comments',
                owner: 'LoveCPro',
                admin: ['LoveCPro'],
                distractionFreeMode: true,
                id: md5(location.pathname),
            });
        gitalk.render('gitalk-container');
        </script>
  • 效果:
  • 出现留言功能需要初始化一下,会发现用于留言的仓库issue生成了条目,那些就是用于保存留言信息的。