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上需要都改成线上地址
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述