sau交流学习社区第三方登陆github--oauth来实现用户登录
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方法的路由定义方式

注意:部署上线后github上需要都改成线上地址
sau交流学习社区第三方登陆github--oauth来实现用户登录的更多相关文章
- sau交流学习社区--songEagle开发系列:Vue.js + Koa.js项目中使用JWT认证
一.前言 JWT(JSON Web Token),是为了在网络环境间传递声明而执行的一种基于JSON的开放标准(RFC 7519). JWT不是一个新鲜的东西,网上相关的介绍已经非常多了.不是很了解的 ...
- sau交流学习社区—vue总结:使用vue的computed属性实现监控变量变化,使用vue的watch属性监控变量变化从而实现其他业务
有时候遇到这么个需求,输入框为空的时候,请求一遍接口,如果输入框不为空的时候,需要点击搜索按钮请求接口. 同步sau交流学习社区:https://www.mwcxs.top/page/464.html ...
- sau交流学习社区--看小说的lovebook一个无线端BS应用
一.前言 loveBook爱上阅读,是一款webapp的读小说等书籍的并且阅读的应用.如果觉得可以,欢迎fork和star. 自己最近在追斗破苍穹电视剧,下班时候在地铁上总听到有人说,斗破苍穹书籍比电 ...
- sau交流学习社区--在element-ui中新建FormData对象组合上传图片和文件的文件对象,同时需要携带其他参数
今天有一个坑,同时要上传图片和文件,而且图片要展示缩略图,文件要展示列表. 我的思路是: 首先,只上传附件照片,这个直接看ele的官方例子就行,不仅仅上传附件照片,还同时上传其他参数. 然后,再做上传 ...
- 学习MVC之租房网站(六)-用户登录和权限控制
在上一篇<学习MVC之租房网站(五)-权限.角色.用户管理>完成了权限.角色.用户的增删改查,现在将基于前面完成的内容,进行后台用户登录和权限控制功能的开发. 一.用户登录 用户登录涉及到 ...
- 【SSH学习笔记】用Struts2实现简单的用户登录
准备阶段 在使用学习Struts2的时候首先要下载相应的架包 Struts2资源下载 这里建议下载第一个,在struts-2.5.14.1-all.zip里有很多实用的东西,不仅有架包还有官方为开发者 ...
- Linux学习笔记(八)Linux常用命令:用户登录查看命令
一.查看登录用户信息 w [用户名] 二.Who who 三.查询当前登录和过去登陆的用户信息 last 四.查看所有用户最后一次登录时间 lastlog
- OAuth协议——PHP第三方登陆协议
慕课网Badguy老师的良心课程! 总会有那种什么都不想干的时候,但现在的日子又不这么允许个人的放纵,我一般就只有这几个选择:看课程视频,看书,看小说..好像还是有可以做的事情.其中,看课程视频有点无 ...
- Github第三方登陆详细流程
一. 流程图 二.具体实现步骤 Ⅰ.创建OAuth App 我们首先需要创建一个OAuth App,根据下图的步骤点击即可 依次填写信息,然后点Register application 然后我们可以看 ...
随机推荐
- Ext Js Sencha Cmd 命令 打包charts
先进入charts包的目录下 cd D:\开发文档API\ext--gpl\packages\charts 在执行打包命令 sencha package build
- Oracle入门《Oracle介绍》第一章1-3 Oracle 逻辑组件
一.数据库的逻辑结构是从逻辑的角度分析数据库的组成.Oracle 的逻辑组件包括: 1.表空间 表空间是数据库中最大的逻辑单位,一个 Oracle 数据库至少包含一个表空间,就是名为SYSTEM的系统 ...
- Beta 冲刺day 6
1.昨天的困难,今天解决的进度,以及明天要做的事情 昨天的困难:在导入导出方面遇到了困难,导出的文件不能直接导入. 今天解决的进度:完成了登录页面的背景设计,并再次测试了整个系统的功能. 明天要做的事 ...
- 使用ADO.NET操作数据库
如有转载的请注明出处!蟹蟹 1.1使用对象连接OLE DB 数据源 OLE DB 数据源包含具有OLE DB 驱动程序的任何数据源,如SQL Server.Access.Excel.Oracle等. ...
- python2.7 的中文编码处理,解决UnicodeEncodeError: 'ascii' codec can't encode character 问题
最近业务中需要用 Python 写一些脚本.尽管脚本的交互只是命令行 + 日志输出,但是为了让界面友好些,我还是决定用中文输出日志信息. 很快,我就遇到了异常: UnicodeEncodeError: ...
- redux 中间件 --- applyMiddleware 源码解析 + 中间件的实战
前传 中间件的由来 redux的操作的过程,用户操作的时候,我们通过dispatch分发一个action,纯函数reducer检测到该操作,并根据action的type属性,进行相应的运算,返回st ...
- Oracle数据库查询优化方案(处理上百万级记录如何提高处理查询速度)
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引.2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引 ...
- 为什么要使用ThreadLocalRandom代替Random生成随机数
799 java里有伪随机型和安全型两种随机数生成器,伪随机生成器根据特定公式将seed转换成新的伪随机数据的一部分,安全随机生成器在底层依赖到操作系统提供的随机事件来生成数据. 安全随机生成器 需要 ...
- vi/vim的常用快捷键
vi/vim分为 命令模式,插入模式(编辑模式),末行模式(最后一行) 模式的转换 ① 其它模式==>正常模式 按 Esc键 ②正常模式==>插入模式 按 i 在光标前插入 按 I 在行首 ...
- SSM-Spring-18:Spring中aspectJ的XML版
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- aspectJ的xml版是开发中最常用的: 下面直接已案例入手,毕竟繁琐的日子不多了 案例:两个接口,俩个实现 ...