sau交流学习社区第三方登陆github--oauth来实现用户登录

最近在丰富nodejsBlog开发的“交流学习社区”(https://www.mwcxs.top)的其他功能以及修复一些bug。

有时候觉得注册会让用户觉得很麻烦,如果提供第三方登陆,用户会选择他经常使用的平台进行登陆,这样可以省去很多繁琐的步骤,开发人员基本都会有Github账号。

在考虑使用第三方登录,就研究了下使用github的oauth来时间用户登录。实现起来还是很简单的,下面简单介绍一下:

一、OAuth 2.0原理

为啥要说下这个oauth 2.0的原理?因为这个是第三方登陆必须要理解的地方。

OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。 ---- 百度百科

(一)该协议和授权认证中涉及三个部分:

1、服务端提供方,例如github,QQ等,github上存储了用户的登录名,email,昵称,头像等信息

2、用户

3、客户端,例如交流学习社区就是一个客户端,需要服务端向我提供一些基本信息

(二)认证授权过程

1、交流学习社区需要通过github获取用户的基本信息

2、跳转到github的授权页面,用户同意交流学习社区获取它的基本信息

3、交流学习社区获取github提供的授权码(验证码),使用授权码向github申请一个令牌

4、github对交流学习社区提供的授权码进行验证,验证没有问题后,给一个令牌到交流学习社区端

5、交流学习社区使用令牌,向github获取用户信息

6、github确认令牌没有问题,返回交流学习社区一些用户的基本信息

二、在github申请OAuth App

在设置-->开发者设置-->授权应用里,新建一个应用

按照要求填写应用的一些东西

Application Name:应用名称(重要)

HomePageURL:网站的URL

ApplicationDescription:网站描述

Authorization callback URL:回调地址 (重要)

三、开始填写这些内容

以sau交流学习社区(https://www.mwcxs.top)的授权登陆作为例子,使用的是基于thinkjs开发的nodejs全栈应用。

1、访问用户登录的验证接口

https://github.com/login/oauth/authorize?client_id=xxxxxxxxxxxxxxxxxx&scope=user,public_repo

2、访问上面接口后,github会让跳转到你预定的url(就是授权的回调地址(Authorization callback URL))

http://localhost:8080/callback?code=****************

3、开发者可以通过code,client_id以及client_secret这三个参数获取用户的access_token即用户身份标识,请求如下

https://github.com/login/oauth/access_token?client_id=xxxxxxxxxxxxxxxxxxx&client_secret=xxxxxxxxxxxxxxxxx&code=xxxxxxxxxxxxxxxxxxx

这样就会返回access_token

4、这样我们就可以用这个access_token来获取用户的信息

https://api.github.com/user?access_token=xxxxxxxxxxxxxxxxx xxxxxxxx

四、总结

回调地址就是说,当用户点击授权后,需要调用的接口。

注:thinkjs默认使用model/contoller/action方法的路由定义方式

sau交流学习社区第三方登陆github--oauth来实现用户登录相关推荐

  1. sau交流学习社区--songEagle开发系列:Vue.js + Koa.js项目中使用JWT认证

    一.前言 JWT(JSON Web Token),是为了在网络环境间传递声明而执行的一种基于JSON的开放标准(RFC 7519). JWT不是一个新鲜的东西,网上相关的介绍已经非常多了.不是很了解的 ...

  2. sau交流学习社区--基于thinkjs+vue+redis+mysql+es6开发的周报企业管理系统weekly

    weekly 周报系统主要是node+vue+redis+mysql+es6,一个企业管理系统,企业员工汇报每周工作情况,以及完成情况,各级负责人可以查看和提醒相应未写周报人员. ,后端完全使用nod ...

  3. sau交流学习社区-songEagle开发系列:Vue + Vuex + Koa 中使用JWT(JSON Web Token)认证

    一.前言 JWT(JSON Web Token),是为了在网络环境间传递声明而执行的一种基于JSON的开放标准(RFC 7519). JWT不是一个新鲜的东西,网上相关的介绍已经非常多了.不是很了解的 ...

  4. sau交流学习社区--看小说的lovebook一个无线端BS应用

    一.前言 loveBook爱上阅读,是一款webapp的读小说等书籍的并且阅读的应用.如果觉得可以,欢迎fork和star. 自己最近在追斗破苍穹电视剧,下班时候在地铁上总听到有人说,斗破苍穹书籍比电 ...

  5. node第三方登陆github(express)

    1.新建授权app(OAuth-Apps) 创建成功以后:Client ID(key)和 Client Secret(密钥)是需要用到的 2.使用的node框架:express 下载node-fetc ...

  6. html表单实现ajax登陆,node.js+jQuery实现用户登录注册AJAX交互

    最近实现了Node.js当作后台,jQuery写前台AJAX代码的,实现用户登录和注册的功能,刷新了前后端交互的三观.特记录一下. 1.login.ejs实现form框架 用户名 密码 form不加m ...

  7. Linux学习(五)---开机、重启和用户登录注销

    文章目录 Linux学习--开机.重启和用户登录注销 一.开机&重启命令 二.用户登录和注销 Linux学习–开机.重启和用户登录注销 一.开机&重启命令 基本介绍: ①shutdow ...

  8. linux查看登录服务器的ip历史记录,通过登陆IP记录Linux所有用户登录所操作日志的方法...

    对于Linux用户操作记录一般通过命令history来查看历史记录,但是如果在由于误操作而删除了重要的数据的情况下,history命令就不会有什么作用了.那么依然要存有历史操作记录应该如何来实现呢? ...

  9. linux有不知名ip登录记录,通过登陆IP记录Linux所有用户登录所操作日志的方法

    对于Linux用户操作记录一般通过命令history来查看历史记录,但是如果在由于误操作而删除了重要的数据的情况下,history命令就不会有什么作用了.那么依然要存有历史操作记录应该如何来实现呢? ...

最新文章

  1. html5的video怎么把里面的控制器移出来_日产Pro-Pilot的ADAS控制器拆解
  2. 我焦躁,并不只是心里承受,还是因为我上面担着。
  3. 日常开发中常用到哪些设计模式
  4. 公司--查看SQL 用web.xml文件
  5. pyqt 照片打上水印
  6. Linux通过网卡驱动程序和版本号的信息
  7. grpc(3):使用 golang 开发 grpc 服务端和client
  8. Linux的相关资源帖
  9. K3 Cloud 常用语法及常见异常
  10. 原子结构示意图全部_原子结构示意图全部-原子结构示意图规律口诀-前20号元素的原子结构示意图...
  11. autocad 职称计算机,2015职称计算机考试《AutoCAD》考点总结(1)
  12. 微信小程序开发总结与心得(二)
  13. openwrt strongswan IPSec IKEV2
  14. 软件测试系列——冒烟测试
  15. Pr动态图形模板Mogrt导入失败 Mogrt is Corrupt 解决方法 Motion Graphics Templates is corrupt.
  16. CTO也糊涂的常用术语:功能模块、业务架构、用户需求、文档
  17. CSTC 2001 聪明的学生 BZOJ 2523 递归(类搜索,推理)
  18. 小程序 | 优惠券样式
  19. strchr和strstr的用法
  20. html+css常见面试问题汇总

热门文章

  1. 萨尔大学计算机受限,【德国留学】留学受限专业是怎么回事?如何被受限专业录取?...
  2. 无线路由器怎么连接移动wifi来使用
  3. SqlServer 数据库服务器运用
  4. 使用moviepy快速剪辑和拼接视频
  5. 小程序实现图片预加载(图片延迟加载)
  6. 免费pdf合并在线,这几个神仙网站请收好
  7. 1185_SPC560B60L7_ADC0标准通道的Injected转换模式
  8. 事务开启SpringBoot报错 The bean ‘xxxImpl’ could not be injected as a ‘com.xxx.service.impl.xxxServiceImpl
  9. android 发布最新系统更新包,Android 12系统
  10. php调用sqlmapapi.py,SQL注入 SqlmapApi快速上手