前往小程序,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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Serverless 应用开发指南:serverless 的 hello, world
在翻译了几篇 serverless 与物联网相关的文章之后,我开始想着好好掌握一下 serverless 的相关知识。 我对于 serverless 的第一认知是:Serverless 是由一堆云服务构建后端服务的,如存储、计算、授权都是由不同的服务来构建的。而作为一个开发人员,我们所要做的就是了解如何搭配不同的云服务。 因此,在进行更多的定义之前,我打算先熟悉一下 serverless,以便于我更好地了解什么是 serverless 应用开发。 Serverless 框架 hello, world 考虑到
Phodal
2018/01/29
5.9K1
Serverless|Framework——图文玩转 AWS Lambda
| 好看请赞,养成习惯 你有一个思想,我有一个思想,我们交换后,一个人就有两个思想 If you can NOT explain it simply, you do NOT understand i
用户4172423
2020/10/23
2.5K0
Serverless|Framework——图文玩转 AWS Lambda
使用 Node.js 快速开启 ServerLess Functions:入门实践指南
近一年来我在很多地方看到 ServerLess 这一词出现,概念介绍的相对比较多,但是真正实践的还是很少,也是出于对新技术的好奇,所以我打算进一步的对 ServerLess 做一个了解,以便体验到 ServerLess 能给我们带来什么便捷,最好的例子还是先从一个 Hello World 开始。
五月君
2020/02/11
2.7K0
使用 Node.js 快速开启 ServerLess Functions:入门实践指南
用AWS部署一个无服务架构的个人网站
在这篇文章里我想介绍下怎样利用AWS(hjlouyoujuqi360com)部署一个无服务架构的个人网站。这个个人网站将具备以下特点:
用户4199102
2018/12/13
3.9K0
使用 Serverless + 飞书打造你的个性化消息提醒系统
如果每件事都花时间去关注,那我们的时间必然会不够用,那有没有什么办法可以让这些消息集中起来并且及时推送呢?在这里我想向大家推荐一个解决方案,那就是使用 Serverless + 飞书打造属于自己的个性化消息提醒系统。
腾讯云serverless团队
2020/07/09
1.8K0
【腾讯云Serverless】记一次使用腾讯云Serverless的VS Code插件来定位问题
该库封装了微信公共平台消息接口,并将其作为中间件的形式,配合express,koa等框架使用。
Juli
2019/08/24
11.9K0
微信公众号接入deepseek
deepseek的api可以用华为云或者腾讯云,官网api经常崩,没有免费额度了。本来想用硅基流动的,但是速度很慢,还是腾讯云快多了。
用户6841540
2025/02/15
2180
使用 ServerLess, Nodejs, MongoDB Atlas cloud 构建 REST API
MongoDB Atlas 是一个在云端的数据库,免去了数据库的搭建、维护,通过其提供的 Web UI 能够让你在 5 分钟之内快速搭建一个 Clusters。Node.js 是一个 JavaScript 的运行时,在 JavaScript 中函数做为一等公民,享有着很高的待遇,通常使用 Node.js 我们可以快速的搭建一个服务,而 ServerLess 是一种 “无服务器架构”,从技术角度来讲是 FaaS 和 BaaS 的结合,FaaS(Function as a Service)是一些运行函数的平台。
五月君
2020/01/16
3K0
使用 ServerLess, Nodejs, MongoDB Atlas cloud 构建 REST API
使用 AWS、k3s、Rancher、Vault 和 ArgoCD 在 Kubernetes 上集成 GitOps
最近我写了一篇关于 CI 和 CD 之间核心区别的文章,我觉得是时候把这些理论运用到实际当中了。
LinuxSuRen
2020/11/09
2.5K0
使用 AWS、k3s、Rancher、Vault 和 ArgoCD 在 Kubernetes 上集成 GitOps
serverless从入门到实践总结篇
虚拟主机已经是快被淘汰掉的上一代产物了。云计算涌现出很多改变传统 IT 架构和运维方 式的新技术,比如虚拟机、容器、微服务,无论这些技术应用在哪些场景,降低成本、提升 效率是云服务永恒的主题。Serverless 的出现真正的解决了降低成本、提升效率的问题。它真正做到了弹性伸缩、高并发、按需收费、备份容灾、日志监控等。
前端进阶之旅
2022/07/04
4.4K1
serverless从入门到实践总结篇
【云原生攻防研究 】针对AWS Lambda的运行时攻击
笔者在上一篇文章《Serverless安全研究— Serverless安全风险》中介绍了责任划分原则。对于开发者而言, Serverless因其服务端托管云厂商安全能力强的特点,实际上降低了总体的安全风险。
绿盟科技研究通讯
2020/12/14
2.1K0
【云原生攻防研究 】针对AWS Lambda的运行时攻击
【玩转腾讯云】使用Serverless+飞书打造你的个性化消息提醒系统
如果每件事都花时间去关注,那我们的时间必然会不够用,那有没有什么办法可以让这些消息集中起来并且及时推送呢?在这里我想向大家推荐一个解决方案,那就是使用Serverless+飞书打造属于自己的个性化消息提醒系统。
用户1358150
2020/04/08
2.4K0
【玩转腾讯云】使用Serverless+飞书打造你的个性化消息提醒系统
如何开发一个 Serverless Express 组件?(附源码)
Python 是一种热门的编程语言,Serverless 是近年来迅速兴起的一个技术概念,基于Serverless架构能构建出多种应用场景,适用于各行各业。
腾讯云serverless团队
2020/03/25
9370
如何优雅地部署一个 Serverless Next.js 应用
上一篇《前端福音:Serverless 和 SSR 的天作之合》,详细介绍了 SSR 相关知识,同时也提到了 Serverless 给 SSR 方案带来的福利。但它只是将 Next.js 应用部署到 Serverless 服务上而已,并不适合实际生产业务。为此本篇专门针对 Next.js 的 SSR 方案进行了探索和优化,一步一步带大家了解,如何基于 Serverless 架构部署一个实际的线上业务。
腾讯云serverless团队
2020/07/17
3.2K0
如何优雅地部署一个 Serverless Next.js 应用
Serverless + Egg.js 后台管理系统实战
作为一名前端开发者,在选择 Nodejs 后端服务框架时,第一时间会想到 Egg.js,不得不说 Egg.js 是一个非常优秀的企业级框架,它的高扩展性和丰富的插件,极大的提高了开发效率。开发者只需要关注业务就好,比如要使用 redis,引入 egg-redis 插件,然后简单配置就可以了。正因为如此,第一次接触它,我便喜欢上了它,之后也用它开发过不少应用。
网站运维工程师
2020/03/11
5K0
使用腾讯云 Serverless 开发公众号后端
如果说云计算是希望资源能够像自来水一样,隋开随用、随关随停,那么 Serverless 就是云计算的未来方向之一。相较于 IaaS、Kubernetes 这些运行时,Serverless 提供更细粒度资源控制的同时,还能提供更大的弹性,允许开发者快速交付功能。
陈少文
2021/08/28
3.5K0
使用腾讯云 Serverless 开发公众号后端
Serverless + Egg.js 后台管理系统实战
作为一名前端开发者,在选择 Nodejs 后端服务框架时,第一时间会想到 Egg.js,不得不说 Egg.js 是一个非常优秀的企业级框架,它的高扩展性和丰富的插件,极大的提高了开发效率。开发者只需要关注业务就好,比如要使用 redis,引入 egg-redis 插件,然后简单配置就可以了。正因为如此,第一次接触它,我便喜欢上了它,之后也用它开发过不少应用。 有了如此优秀的框架,那么如何将一个 Egg.js 的服务迁移到 Serverless 架构上呢? 背景 我在文章《基于 Serverless Com
腾讯云serverless团队
2020/03/20
4.5K0
开发者:Serverless 从懵比到实战
作者介绍:陌小路,哔哩哔哩前端 GitHub:https://github.com/STDSuperman 本文选自「掘金x腾讯云征文|万物皆可 Serverless」 原文链接:https://juejin.cn/post/6895346770177687566 Serverless 是一种执行模型(execution model)。在这种模型中,云服务商负责通过动态地分配资源来执行一段代码。云服务商仅仅收取执行这段代码所需要资源的费用。代码通常会被运行在一个无状态的容器内,并且可被多种事件触发(htt
腾讯云serverless团队
2021/01/05
1.1K0
如何搭建一个高效安全的API开放平台:完整步骤指南
在当今数字化时代,API(应用程序编程接口)已成为连接不同系统和服务的桥梁。一个设计良好的API开放平台能够为企业带来巨大的商业价值和技术优势。本文将详细介绍从零开始搭建一个API开放平台的完整步骤,涵盖技术选型、架构设计、安全防护和运维管理等关键环节。
编程小白狼
2025/04/24
1180
如何将传统 Web 框架部署到 Serverless
因为 Serverless 的“无服务器架构”应用相比于传统应用有很多优点,比如:无需关心服务器、免运维、弹性伸缩、按需付费、开发可以更加关注业务逻辑等等,所以现在 Serverless 应用已经逐渐广泛起来。
政采云前端团队
2022/12/01
2.7K0
如何将传统 Web 框架部署到 Serverless
推荐阅读
相关推荐
Serverless 应用开发指南:serverless 的 hello, world
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验