当前位置: 首页 > 后端技术 > Node.js

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

时间:2023-04-03 14:41:07 Node.js

sau交流学习社区第三方登录github--oauth实现用户登录《交流学习社区》(https://www.mwcxs.顶部)和一些错误修复。有时候觉得注册会让用户觉得很麻烦。如果提供第三方登录,用户会选择自己经常使用的平台登录,可以省去很多繁琐的步骤。开发者基本上都会有一个Github账号。在考虑使用第三方登录时,我研究了使用github的oauth来计时用户登录。实现起来还是很简单的。这里简单介绍一下:1.OAuth2.0的原理为什么要讲oauth2.0的原理呢?因为这是第三方登录必须了解的。OAuth(OpenAuthorization)是一种开放标准,允许用户允许第三方应用程序访问用户存储在网站上的私有资源(如照片、视频、联系人列表),而无需向第三方应用程序提供用户名和密码。----百度百科(一)协议及授权认证涉及三部分:1、服务器提供者,如github、QQ等,github存储用户的登录名、邮箱、昵称、头像等信息2、user3,client,比如交流学习社区是一个客户端,服务端需要给我提供一些基本信息(二)认证授权流程1,交流学习社区需要通过获取用户的基本信息github2、跳转到github授权页面,用户同意交流学习社区获取其基本信息。3、交流学习社区获取github提供的授权码(验证码),使用授权码向github申请token。4.github提供给交流学习社区的授权码验证验证没有问题,给交流学习社区终端一个token5.交流学习社区使用token从github获取用户信息6.github确认token没有问题,返回交流学习社区部分用户的基本信息2、在github上申请OAuthApp在Settings-->DeveloperSettings-->AuthorizedApplication,新建一个application并填写根据需要在某些应用程序信息中。ApplicationName:应用名称(重要)HomePageURL:网站URLApplicationDescription:网站描述AuthorizationcallbackURL:回调地址(重要)3.开始填写这些内容。以sau交流学习社区(https://www.mwcxs.top)的授权登录为例,使用基于thinkjs开发的nodejs全栈应用。1.访问用户登录的认证接口https://github.com/login/oauth/authorize?client_id=xxxxxxxxxxxxxxxxxx&scope=user,public_repo2.访问以上接口后,github会重定向到你预留的url(即,授权回调地址(AuthorizationcallbackURL))http://localhost:8080/callback?code=******************3.开发者可以传入code的三个参数,client_id和client_secret获取用户的access_token,也就是用户的身份。请求如下:https://github.com/login/oauth/access_token?client_id=xxxxxxxxxxxxxxxxxxxxx&client_secret=xxxxxxxxxxxxxxxxxx&code=xxxxxxxxxxxxxxxxxxxxx,会返回access_token4,这样我们就可以使用这个access_token获取用户信息https://api。github.com/user?access_token=xxxxxxxxxxxxxxxxxxxxxxxxx4.总结回调地址是用户点击授权时需要调用的接口。注意:thinkjs默认使用model/contoller/action方法的路由定义方式