在之前的《Hexo 搬迁记》系列文章中,我提到过本站采用 Gitment 作为评论系统,并对其进行了一些介绍。这里再开一帖来对其进行更多的说明。
开始使用
关于如何为你的站点启用 Gitment,请参看这篇 原作者的文章,同时也可参看我之前的这两篇帖子:Hexo 搬迁记系列二 插件篇 和 Hexo 搬迁记系列三 主题篇。
我对 Gitment 进行了修改,并将它发布到了 Github。
Gitment 的缺陷
Gitment 的确很方便,但他也有很明显的缺陷。这篇文章 手记4:谈谈Gitment中泄露secret的前因后果与解决方法 进行了很详细的说明。非常感谢那位博主的文章,以及他对我的疑问的详细的解答。
自建 Oauth CORS Service
在上面提到那篇文章中,那位博主很明确地提到了一点:Github OAuth 并不支持浏览器跨站访问
。这使得仅仅只将 Gitment 插入网页而同时却没有一个解决 CORS 问题的措施的话,你的访客是无法调用 Github OAuth API 的,导致的结果就是访客无法登录你的 Gitment,并且你的 Gitment 也是无法加载出评论的。
对于这个问题,Gitment 原作者 imsun 提供了一个很方便的解决方案:Oauth Server。这是一个基于 Nodejs 的服务,作用是提供一个 CORS,以使客户得以调用 Github API。
如果直接使用原版 Gitment 的话,你会发现有一个指向 https://gh-oauth.imsun.net
的 access,这是原作者提供的一个服务,它会帮助你调用 Github API,然后返回一个 access_token。
当然,你也可以选择替换成你自己的,防止作者的服务哪天失联了。接下来介绍如何自建一个 Oauth Server
。
首先,你需要先运行这个服务:
git clone https://github.com/imsun/gh-oauth-server.git npm install npm start
以上完成后,Oauth Server 就会监听在你的 3000 端口上。接下来你需要修改 Gitment 的文件:gitment.js
和 gitment.browser.js
,将这两个文件中的 “https://gh-oauth.imsun.net“ 替换为 你的服务器IP:3000
。这样一来,你就应用了你自己的 Oauth Server 了。
当然,你也可以加入点别的特性,例如把它放到一个 HTTPS 上,就像 https://gh-oauth.imsun.net 一样。
要实现这个,以 Nginx 为例,建立一个 HTTPS Server,然后指定反代到后端的 Oauth Server:
server { location / { proxy_pass http://localhost:3000; } }
转载请注明:逗比根据地 » Gitment – GitHub Issue 评论系统