Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >基于Github issues + umi 搭建一个免费的带评论功能的博客(一)

基于Github issues + umi 搭建一个免费的带评论功能的博客(一)

作者头像
astonishqft
发布于 2022-05-10 12:26:28
发布于 2022-05-10 12:26:28
72700
代码可运行
举报
运行总次数:0
代码可运行

作为一个工作了好几年的前端搬砖狗,搭建一个属于自己的博客是很有必要的,一来可以总结自己的开发学习经验,二来可以分享和记录下自己的学习轨迹,可谓好处多多,那么今天我就给大家介绍一种搭建博客的新方式。

✈️为什么选择Github issues而不是其他方式?

其实在使用Github issues搭建博客之前自己就曾经尝试过其他方式搭建属于自己的博客平台,最早的时候自己买过云服务器,买的域名,搭建过一个博客系统,但是发现每次管理博客很费事,后来又做了个博客的后台管理系统,方便自己对博客进行管理,这种方式自由度很高,可以随心所欲的根据自己的想法来实现美化和改造自己的博客系统,缺点也是显而易见的,每个月的服务器租赁开销也是一笔不小的开销,时间久了就放弃了。后来还尝试过使用hexo框架搭建的博客,挂载到github.io上,这种方式不用自己租赁服务器,而且可以部署在Github上,但是缺点也是有的,比如自定义能力比较差,只能基于hexo提供的一些模版来打造自己的博客,还有就是博客的评论功能不是很完善,虽然也可以基于一些第三方的插件实现,比如“多说”,但是稳定性不是很强,使用起来比较麻烦,最后也放弃了。

Github issues具有下面几个优点:

  • 天生的前后端分离

借助于Github提供的API接口,我们可以轻松地和数据进行交互,比如获取issues列表数据、给某条issue点赞、给某条issue进行评论(惊喜的发现这个不就可以实现博客的评论操作了么🐶)。

  • 多种接口调用方式

Github贴心的为开发者提供了两种接口调用方式,REST API v3接口和GraphQL API v4接口,你可以根据自己需要使用不同的调用方式。

  • Github issues支持Markdown语法,支持给issues加标签

现在大部分人写博客都是基于Markdown语法来书写的,Github issues内置对Markdown语法的支持,同时,针对每条issue,可以设置相应的标签(Label),甚至还可以自定义标签的颜色,这里不得不说Github为大家想的真是周到啊😄。

  • Github提供了基本的用户信息

Github提供了获取用户的接口,用户使用Github账号登录后,可以获取用户的基本信息,包括用户名、头像、坐标地点、邮箱等信息,方便我们展示这些基本信息。

🚀认识Github App

什么是Github App

前面我们说到了,基于Github提供的API,我们可以干很多事情,但是很多接口直接去调用是没法调用成功的,必须要提供认证信息才能调用成功。这里就要用到Github App了,那么什么是Github App呢?大家可以参考下官方说法Github App。

简单来说,Github App提供了一个认证的方式,用户通过创建一个Github App,来设置Github提供的功能和权限,然后将该App安装到某一个repository中,这样这个repository就能获取该Github App所赋予的相应操作权限。

为GitHub App识别和授权用户

当我们的Github App代表用户对服务器发起请求时,必须使用用户的访问令牌授权这些请求,主要包括以下三个步骤(具体可以参考这里Github App授权流程):

  1. Users are redirected to request their GitHub identity
  2. Users are redirected back to your site by GitHub
  3. Your GitHub App accesses the API with the user's access token
  • 第一步:需要跳转到Github指定的授权页面进行授权 授权的请求地址是:https://github.com/login/oauth/authorize 这是一个Get请求,请求的同时还需带上以下几个参数:

名称

类型

描述

client_id

string

必填项。创建Github App时生成的client ID。

redirect_uri

string

必填项。重定向的地址。当授权成功后会重定向到该地址,并且会将授权码在URL上一并返回,需要注意的是,这里的重定向地址必须要和我们创建Github App时所填写的User authorization callback URL保持一致。

state

string

非必填项。一个防止伪造攻击的随机数字符串。

login

string

非必填项。建议用于登录和授权应用程序的特定帐户。

  • 第二步:Github重定向回指定的callback URL 当授权成功后,Github会重定向到上一步中的callback URL,同时会在地址栏带上一个code参数的授权码,接下来我们就需要通过这个授权码来获取Token。

获取到授权码后,向这个地址发送一个POST请求以获取Token: https://github.com/login/oauth/access_token

这个请求同样有些参数需要传递:

名称

类型

描述

client_id

string

必填项。创建Github App时生成的client ID。

client_secret

string

必填项。创建Github App时生成的client secret。

code

string

必填项。上一步中获取的授权码。

redirect_uri

string

非必填项。授权成功后的重定向地址。

state

string

非必填项。第一步中传入的随机数。

请求成功后会得到如下的返回结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
access_token=e72e16c7e42f292c6912e7710c838347ae178b4a&token_type=bearer

这个请求会存在跨域的问题,后面我会教大家如何解决这个问题

  • 第三步:使用获取的Token去请求Github API 上面两步成功完成后,现在我们就可以用获取到的Token去调用相应的Github API了。

上面就是一个完整的授权获取数据的过程,那么下面就介绍下如何来创建一个Github App

🌿创建一个Github App

Github的主页点击用户头像,选择Settings菜单,点击Developer settings菜单,即可进入Github Apps操作页面,点击New Github App按钮,即可进入到创建Github App的页面。

创建Github App 填写好Github App nameHomepage URLUser authorization callback URL这些字段。注意因为是开发阶段,所以这里的User authorization callback URL地址我填写的是我本地开发环境地址,真正上线后还需要替换成github.io地址。

接着需要设置相关权限,因为我们是用Issues来作为博客的数据来源,所以需要勾选上允许读写操作。

Github App信息 接下来还可以根据你自己的需要设置一些其他方面的权限,比如订阅事件,当有人评论你的Issues时,Github会自动以邮件的形式通知你,这个还是挺实用的,方便你随时对Issues进行回复。

设置相应权限 点击Create Github App按钮即可完成一个Github App的创建过程。 操作成功后即可看到完整的Github App信息:

Github完整信息

🐘安装Github App

前面提到过,创建的Github App还必须要安装到对应的repository,才能够在调用API的时候获取设置的相应权限。

在刚刚创建成功的Github App页面,选择左侧的Install App菜单,然后选择你的账户去安装,这里你可以选择给所有的repository进行安装或者选择某一个指定的repository进行安装。

安装Github App

总结

至此,关于利用Github App获取对Github API的相关操作权限的部分就全部结束了。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前端架构师笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
基于GitHub Issues的评论系统--gitment
最近在做个人博客网站,需要评论系统,比较流行的几个第三方评论系统:多说,友言,网易云跟帖,gitment,之前使用过多说,感觉挺好用的,但是现在多说服务器已经关闭了,最后我选择了gitment这个评论系统,因为个人博客网站面对的人群比较偏向IT领域,gitment是使用GitHub账号进行授权登录,所以可以省却用户注册登录等操作。
创译科技
2019/06/03
1.8K0
基于Github issues + umi 搭建一个免费的带评论功能的博客(二)
上一篇文章我主要介绍了什么是Github App,以及如何利用GitHub App为我们的repository进行授权,解决了博客的数据存储和获取,那么这篇文章我将着重介绍博客搭建过程中用到的前端技术。
astonishqft
2022/05/10
5870
基于Github issues + umi 搭建一个免费的带评论功能的博客(二)
如何用 GitHub Issues 搭建一个轻博客系统:Path Meme 项目实战
一直想随便写点什么东西,但是不想发朋友圈和微博,也没那么多的内容可以写一篇长文章,还想让内容有自主性,不担心随便说话被删,前几天正好试用了一下 Cursor,正好用它按自己的想法写一个可以随便说话的轻博客系统。 Path Meme —— 一个利用 GitHub Issues 作为 CMS 的现代化博客系统。今天,我和大家分享如何从零开始搭建这样一个博客系统。
goodspeed
2024/11/02
1510
6000 字 | 终于,给网站插上了留言的翅膀
我的开源项目 PassJava 有个在线的技术文档,但是没有评论功能,总感觉缺了点什么,这次来给它加上留言功能。
悟空聊架构
2022/05/13
6910
6000 字 | 终于,给网站插上了留言的翅膀
利用STS临时密钥服务快速搭建直传页面的实践
作者简介 吴硕卫:腾讯云技术支持工程师,现负责腾讯云存储产品的技术支持专项工作。 为了实现权限分离,提供更细颗粒度的权限控制,有效的控制帐号生效周期,本文通过腾讯云 CAM 产品的 STS(临时访问凭证)来实现部署,调试,验证等一系列的操作体验。 主要介绍基于腾讯云对象存储 COS,如何使用 COS 签名工具和 HTTP 请求工具 Postman 来验证临时密钥的有效性,以及如何快速实现一个 Web 端页面的文件直传功能。服务器上只需要生成和管理访问密钥,无需关心细节,文件数据都存放在腾讯云 COS
云存储
2020/08/07
3.6K0
【React 实战教程】从0到1 构建 github star管理工具
在日常使用github中,除了利用git进行项目版本控制之外,最多的用处就是游览各式的项目,在看到一些有趣或者有用的项目之后,我们通常就会顺手star,目的是日后再看。但是当我们star了许多项目之后,回过头想找一个的项目就会发现,很难在短时间内找到它,官方也并没有提供很好的管理我们的star项目的功能,因此在市面上也出现了一些对star进行管理的工具,比如说 astralapp,Star Order等等,其实github的接口api都是开放的,我们完全可以自己构建一个属于自己的项目管理工具。公司的前端技术栈是React,而笔者之前使用的是Vue,因此正好想利用github的open api 自己构建个react的github star管理项目来加深react的使用。而大体功能我们就模仿astralapp。
用户2356368
2019/04/03
1.3K0
【React 实战教程】从0到1 构建 github star管理工具
没错,用三方 Github 做授权登录就是这么简单!(OAuth2.0实战)
上一篇《OAuth2.0 的四种授权方式》文末说过,后续要来一波OAuth2.0实战,耽误了几天今儿终于补上了。
程序员小富
2020/07/14
1.2K0
没错,用三方 Github 做授权登录就是这么简单!(OAuth2.0实战)
【Gitalk】网站中加入Gitalk评论系统
#更多GitHub REST API v3 GitHub 提供了很多方便第三方开发的 API,当然,github issues 的增删改查 API 也在其中,有了这些 API,你才能各种施展奇技淫巧,比如我们现在要写的评论系统。另外,有人怀疑我们应不应该“滥用”这些 API,但是,个人觉得,既然,GitHub 提供了这些 API,就是说明要开放给大家这些权限,应该就不怕你“滥用”。那么,要满足我们现在的需求需要哪些 API 呢,下面我列举一下,:owner 为 Github 名,:repo 为仓库名,:issue_number为issue编号。
Cheng_Blog
2022/02/25
5290
【Gitalk】网站中加入Gitalk评论系统
从零开始的Flutter之旅: MethodChannel
在flutter_github有这么一个场景:通过authorization认证方式进行登录。而authorization的具体登录形式是,通过跳转一个网页链接进行github授权登录,成功之后会携带对应的code到指定客户端中,然后客户端可以通过这个code来进行oauth授权登录,成功之后客户端可以拿到该账户的token,所以之后的github操作都可以通过该token来进行请求。由于token是有时效性,同时也可以手动解除授权,所以相对于在客户端进行账户密码登录来说更加安全。
Rouse
2020/07/13
1.2K0
基于python flask详述 OAuth 2.0 的运作流程
OAuth2 对于我来说是一个神秘的东西,我想初步的弄懂中间的整个流程,于是就去google搜索相关的文档资料。
有福
2018/08/28
3.4K1
基于python flask详述 OAuth 2.0 的运作流程
从0开始构建一个Oauth2Server服务 <2> 访问 OAuth 服务器中的数据
本节中我们将介绍如何在现有的 OAuth 2.0 服务器上访问您的数据。对于此示例,我们将使用 GitHub API 并构建一个简单的应用程序,该应用程序将列出登录用户创建的所有存储库。
用户1418987
2023/10/16
1760
从0开始构建一个Oauth2Server服务 <2> 访问 OAuth 服务器中的数据
一文带你搞懂GitHub OAuth(下)
通过OAuth,第三方应用程序可以在用户授权的情况下安全地访问GitHub上的数据,而不需要获取用户的GitHub凭据。
闫同学
2024/01/15
4270
一文带你搞懂GitHub OAuth(下)
第三方登录(2)---GitHub登录
上一篇介绍了如何实现第三方QQ登录,其实都不涉及后端。在前端使用js就可以实现第三方QQ登录。然后如果有数据库操作可以发起ajax请求将登录得到的用户信息发给后端,在后端对用户信息进行保存。第三方登录(1)---qq登录 。今天,我要讲讲第二种第三方登录方式:GitHub登录。很多人已经都听过GitHub这个IT开源平台,而且其实如果我们网站用户主要面向于IT类的,这时候使用GitHub第三方登录就会极度简化用户注册操作。接下来说说如何实现GitHub第三方登录。我们先看看具体流程:
创译科技
2019/06/02
1.8K0
Django 博客单元测试:测试评论应用
先来建立测试文件的目录结构。首先在 comments 应用的目录下建立一个名为 tests 的 Python 包,然后删除 comments 应用下 django 自动生成的 tests.py 文件,防止和 tests 包冲突,再根据需要测试的内容,创建相应的 Python 模块。最终 tests 目录结构如下:
HelloGitHub
2021/05/14
5900
给hugo博客添加评论功能
静态博客不像动态博客一样想要什么功能就写个代码实现,但是折腾一番还是可以满足日常需求的。本文主要讲述使用utterances给静态博客实现评论功能。
用户2672162
2021/02/17
1.8K1
在onelogin中使用OpenId Connect Authentication Flow
onelogin是一个优秀的SSO(Single Sign-On)服务提供商,我们可以借助onelogin的服务,轻松构建SSO程序。
程序那些事
2021/02/02
1.4K0
Spring Security 6.x 微信公众平台OAuth2授权实战
上一篇介绍了OAuth2协议的基本原理,以及Spring Security框架中自带的OAuth2客户端GitHub的实现细节,本篇以微信公众号网页授权登录为目的,介绍如何在原框架基础上定制开发OAuth2客户端。
fullstackyang
2024/06/23
4510
Spring Security 6.x 微信公众平台OAuth2授权实战
可能是第二好的 Spring OAuth 2.0 文章,艿艿端午在家写了 3 天~
在《芋道 Spring Boot 安全框架 Spring Security 入门》文章中,艿艿分享了如何使用 Spring Security 实现认证与授权的功能,获得广大女粉丝的好评。
芋道源码
2020/07/02
2.1K0
可能是第二好的 Spring OAuth 2.0 文章,艿艿端午在家写了 3 天~
hexo-butterfly-评论系统引入
​ 可参考官网提供的评论系统接入方式进行构建,在此过程中也陆陆续续摸索了网友们对各个评论的评价和使用的情况,可结合自身的情况进行调整,从多个方面考虑,不外乎第三方托管应用权限问题、自建服务维护/学习成本、组件引用便捷性等
hahah
2022/06/15
1.9K0
利用 GitHub 从零开始搭建一个博客
趁着周末,搭建了一下 NightTeam 的官方博客和官方主页,耗时数个小时,两个站点终于完工了。这里写一篇文章顺手记录了下来。不过这篇原创我发在了 NightTeam 上面了,这边我就作为转载了。
崔庆才
2019/09/30
1K0
利用 GitHub 从零开始搭建一个博客
推荐阅读
相关推荐
基于GitHub Issues的评论系统--gitment
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验