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方法的路由定义方式
如若转载,请注明出处:sau交流学习社区-power by saucxs(程新松)(/page/444.html)
- 记录一次nginx故障:recv() failed (104: Connection reset by peer) while reading response header from upstream,
- 微信小程序初体验,入门练手项目--通讯录,部署上线(二)
- 微信小程序初体验,入门练手项目--通讯录,后台是阿里云服务器(一)
- thinkjs性能优化之nginx配置
- 开学AI登场!南京高校用人脸识别查考勤管理学生,还敢逃课、玩手机?姚AI变脸热到爆!开源换脸工具FakeSwap今登GitHub排行榜第二位,ICLR飞升,IJCAI降级:清华的新版AI顶会评级引发学术圈热议,意外!已获6700万美元投资的自动驾驶LiDAR创业公司关门了
标签云
图文推荐
“深度学习”这十年:52篇大神级论文再现AI荣与光,12岁上大学、31岁成最年轻IEEE Fellow,前百度总裁张亚勤加盟清华,全球女性福音!DeepHealth深度学习模型检测乳腺癌完胜5名放射科医师,读博无门,就业碰壁,孤独当了7个月“民科”后,我的论文中了顶会Spotlight
saucxs 2020-01-03 10:04:09
1200 万部手机、500 亿实时位置数据,上帝视角还原特朗普全天行踪,自动驾驶玩漂移 斯坦福最新研究:《头文字D》无人车版来了,印度裔又要统领美国科学界?特朗普提名他领导美国国家科学基金会,GitHub排名第一!免费最强“抢票神器”在手,程序员抢票再不用跪求加速包
saucxs 2019-12-25 10:08:05
蝉联AI专业全球冠军!清华力压CMU再夺CSRankings高校AI排行王座,波士顿动力CEO:不排斥军方订单,就想你粗暴地对待机器狗,亚马逊Alexa突然发疯,读着论文教主人自杀:你活着地球人口会过剩,图神经网络的ImageNet?斯坦福大学等开源百万量级OGB基准测试数据集
saucxs 2019-12-24 09:57:45
2020 AAAI Fellow名单出炉!深度学习先驱Bengio和LeCun双双入选,李世石最后一战不敌AI“韩豆”!唯一战胜过AlphaGo的男人正式退役,GAN和PS合体会怎样?东京大学图像增强新研究:无需配对图像,增强效果还可解释,2019年最受关注的100项研究,AI“复活”蒙娜丽莎排第一
saucxs 2019-12-23 09:58:10
这家AI公司用面具破解中国人脸识别系统!微信、支付宝、火车站无一幸免,OpenAI公开Dota 2论文:胜率99.4%,「手术」工具连续迁移训练,9岁神童大学毕业前突然退学,转赴美国攻读电气工程博士,Reddit热议:15岁高中生用神经网络建立生命进化“新宇宙”
saucxs 2019-12-17 09:45:30
- 东方财富
- saucxs博客园
- weekly周报
- loveBook
- 前端博客
- 技术交流学习社区
- saucxs
- segmentfault
- saucxs的博客
- haorooms
- luckyscript
- 东方财富期货
- 峰云就她了
- binlive
- songEagle
- 且听风吟
- (TX)Heying Ye
- CG Online Judge
- Chris's Blog
- vueRouter
- 龙恩0707
- 鑫空间,鑫生活
- 木易杨
- MDN-js
- Cherry's Blog
- InterviewMap
- 安安哥的小戏台
- xiaojun1994-cat
- JavaScript-Garden
- junruchen-daily
- 秋天爱美丽
- web-summary-daily
- w3cplus-tb
- 潜行者m
- 于江水
- KieSun-git
- cnodejs
- aerminBlog
- fex_bd
- gwuhaolin-git
- Deboy's Blog
- react-china
- react.docschina
- Vuejs社区
- vuejsDoc
- cdnSocketIo
- shuaihuaCC
- colorize
- stazhu
- 前端学习
- IBM Dev社区
- linux运维笔记
- webpackDoc
- sayskyGithub
- 前端里
- 996.ICU
- electronjs
- CS-Notes
- mqyqingfengBlog
- beego官方
- 编码规范
- 阮一峰个人网站
- sessionstack
- damonareGoUp
- 咀嚼之味
- fe-interview
- xd-tayde/blog
- css-tricks
- ghmagical个人中心
- markyunp6
- hellogithub
- 霜序廿
- rin部落
- 建站素材
- 前端资源网
- CSS开发手册
- web技术交流
- 程新松个人网站
- wangEditor
- 小松博客
- 交流学习社区