首页 > 技术文章 > OAuth协议第三方登录

lijingwen-99 2017-05-25 15:28 原文

网站为了方便用户快速的登录系统,一半都会提供一些知名的第三方平台账号进行快速登录的功能,然后这个第三方登录呢都是基于oauth协议来实现的

授权方式:1用户向网站发起登录请求,要求用第三方来登录网站

          2网站要求用户第三方的账号密码,用户提供第三方平台账号密码

          3网站使用用户提供的账号密码去登录服务商网站,获取用户的信息资料

但是这样的第三方登录是有缺点的:

1第三方的账号密码都会泄露给服务商网站,导致安全问题;

(比如:微信 没有人愿意吧微信账号密码告诉当前访问的网站,一旦当前网站发生信息泄露,那么你的微信账号密码都会丢失)

2假设用户想要收回权限的话,服务商网站不可能主动放弃用户给的权限,那么只能是我们用户自己修改微信密码了,但是在修改密码的,我们在其他网站的授权也都失效了

因此制定了oauth标准 就是想为api访问授权提供一个开放的标准

oAuth协议是安全的  跟以前不同的是oauth协议呢它在申请授权的时候不会触及到用户的基本信息(用户名以及密码),所以服务商网站不需要用户名和密码就可以申请到授权,所以它是安全的  服务商和第三方登录依据oauth协议标准来编码,这样就可以实现一个安全的授权机制

授权方式:用户向服务器发起请求,要求使用其他平台(第三方)的授权登录,这个时候呢服务商网站并不是直接的要求用户提供其他平台的账号密码,而是把用户浏览器引导进入服务商的授权登录界面,然后用户在服务商的网站页面进行登录授权,所以这样便解决了用户不用直接把自己的账户信息透露给用户商,登录授权后,网站服务器就会生成一个访问码,我们都叫做令牌,这个令牌包括了用户,和一些权限的信息,生成这个令牌后,然后用户会携带这个令牌跳回网站页面,然后网站收到这个命令后,用户就可以携带这个令牌去访问用户商的服务器,在这个过程中不会透露用户的账号和密码。

实现微信授权登录

在微信公众平台上注册一个开发者账号,拥有一个已通过审核的网站应用,获得相应的appidappsecret 申请登录通过审核后,就可以开始接入流程

请求code  失败是参数不对  成功返回二维码 用户允许授权登录后带上参数

通过code获取token

通过token调用接口

然后就可以使用了

推荐阅读