流程概述
使用github,或者其他任何三方网站账号登录你的网站,实现过程可以分解为几个步骤:
实现网站的自有登录系统向github注册网站应用用户首次选择github登录时,把用户的github账号绑定到在网站注册的账号。 OAuth授权主要说明步骤2和3的实现,步骤2其实就是OAuth授权的过程。
OAuth是什么?
OAUTH协议为用户资源的授权提供了一个安全、开放、简单的标准。与以往的授权方式不同,OAUTH的授权不会让第三方接触到用户的账户信息(如用户名、密码),即第三方无需使用用户的用户名、密码即可申请用户资源的授权,因此OAUTH是安全的。
要从用户的角度理解这个定义,用户要用github账号登录其他第三方个人网站,最重要的是要保证第三方网站不能获取用户的git账号、密码等敏感信息。
OAuth的流程
访问github 1的OAuth身份验证。在github注册你自己的网站应用
登录github后设置>开发者设置>;OAuth应用程序>注册新的应用程序
2.使用github登录并跳转到GitHub用户授权页面。
Client_id必须传递其他参数,如有必要,例如,如果我需要在这里获取用户的邮箱信息,我添加一个scope=user:email
最终网址如下:
https://github.com/login/oauth/authorize?客户id =你的客户id & amp重定向_ uri = your _ website _ callback _ uri & amp;范围=用户:电子邮件
3.在上一步登录后,用户将跳转到您设置的重定向uri
并将带来一个代码参数,这是以后获取用户令牌的必要参数。
在获得这个代码参数之后,在您的业务代码中调用API https://github.com/login/oauth/access_token,并传入三个参数,client_id client_secret code,以获得一个access_token。
4.使用access_token获取github中用户的基本信息
调用https://api.github.com/user? Access _ token = Access _ token,可以得到基本的用户信息。
用户的基本信息有很多,第一步可以根据参数范围设置这些信息。
5.存储github用户信息并访问您自己的登录系统
将用户的github信息与您网站上的用户账号绑定后,实现了使用github登录您网站的功能。
实例,该站访问自己的登录系统的实现思路的借鉴
public functionhandleGithubCallback(){ $githubUser = Socialite::driver( 'github')->user(); $user = User::where( 'github_id', $githubUser->id)->first(); /*用户已经登陆*/ if(auth()->check()) { $currentUser = auth()->user(); /*当前用户已经绑定了Github账号*/ if($currentUser->github_id) { /*绑定的Github账号和返回的Github账号一致,直接返回,不用理会*/ if($currentUser->github_id == $githubUser->id) { returnredirect( $this->redirect); } /*绑定的Github账号和返回的Github账号不一致,返回错误信息*/ else{ returnredirect( $this->redirect)->withErrors( 'Sorry,you have bind a different github account!'); } } /*当前用户没有绑定Github账号,试图绑定*/ else{ /*返回的Github账号已经被绑定了,返回错误信息*/ if($user) { returnredirect( $this->redirect)->withErrors( 'Sorry,this github account has been bind to another account,is that you?'); } /*返回的Github账号没有被绑定,正常绑定*/ else{ if( $this->bindGithub($currentUser, $this->getDataFromGithubUser($githubUser))) { returnredirect( $this->redirect)->with( 'success', '绑定 Github 成功'); } returnredirect( $this->redirect)->withErrors( '绑定 Github 失败'); } } } /*用户没有登陆*/ else{ /*让绑定的用户直接登陆*/ if($user) { auth()->loginUsingId($user->id); returnredirect( $this->redirect)->with( 'success', '登录成功'); } /*一个全新的用户来了!!!尝试注册*/ else{ $githubData = $this->getDataFromGithubUser($githubUser); session()->put( 'githubData', $githubData); returnredirect()->route( 'github.register'); } } } nginx视频直播流开源扩展推荐nginx公众账号也会推送好的文本,主要说后端技术,可以通过扫描或者搜索nginx来添加。
1.《github注册 用github账户登录你的网站》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《github注册 用github账户登录你的网站》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/tiyu/798428.html