基于Oauth2.0协议第三方登录-github登陆


第三方登录的实质

第三方登录的实质,就是在OAuth2.0协议的基础上,利用外部的标识来获取帐号的内部标识然后完成登录的过程。
具体的讲,就是将三方的帐号绑定到产品自身的帐号上,当查询到用户第三方的帐号已经绑定了平台的某个user_id时,直接登录对应的帐号。例如利用微信QQ快捷登陆,可以不用注册APP账号,先点击跳转到微信,再点击授权进去APP中。

OAuth 2.0协议

OAuth2.0就是客户端和认证服务器之间由于相互不信任而产生的一个授权协议,只要授权方和被授权方遵守这个协议去写代码提供服务,那双方就是实现了OAuth2.0模式。


OAuth2.0协议规范流程

OAuth2.0协议规范流程.png

第三方登录之GitHub实践

开发之前,需要前往第三方登录的开发者平台QQ、新浪微博、Github,注册账号并填写信息申请接入,成功后会给你一个ID和秘钥,以后你就通过该ID和秘钥来获取令牌,从而实现第三方登录。申请ID和秘钥时Github不需要审核,所以本文主要介绍GitHub实践。QQ、微信、微博等需要审核,但流程和原理都是一样的。
Register a new OAuth application
登陆个人GitHub账号,进入【Settings】->选择【applications】->选择【Developer applications】-> 【Register a new OAuth application】

API地址

以Github为例,其相应的API地址分别为:
https://github.com/login/oauth/authorize?client_id={client_id}&redirect_uri={redirect_uri}&state={state}
http://localhost:8080/oauth/github/callback?code={code}&state={state}
https://github.com/login/oauth/access_token
https://api.github.com/user?access_token={access_token}

第一步:引导用户跳转 github 授权登录页面
  GET: https://github.com/login/oauth/authorize?client_id=xxxxx&state=xxx&redirect_uri=xxxx; 
  (client_id 上面已经拿到了,state参数随便传多少,redirect_uri 就是你上面填的Authorization callback URL)
第二步: 用户授权后重定向 我们平台【回调地址】,返回code 参数值,通过code 再次访问 github
  POST:https://github.com/login/oauth/access_token?client_id=xxx&client_secret=xxx&code=xxx&redirect_uri=回调地址
  (这次会得到响应的access_token)  
第三步:通过获取的access_token 换取 用户信息
  GET: https://api.github.com/user?access_token=xxx;
第四步:得到github授权用户的个人信息,就可以插入到我们的数据库中去了,授权登录成功,跳转主页



 Valine评论

为了便于区分,请您在留言时填写一下昵称
Emoji | Preview
{{comments.length}} 评论
{{comment.username}} {{comment.osbrowser}}
{{comment.createTime | filterTime}} 回复

{{commentSon.username}} {{commentSon.osbrowser}}
{{commentSon.createTime | filterTime}} 回复
@{{commentSon.replyname}}

谢谢捧场😁