ylbtech-小程序-文章:微信第三方登陆(静默受权和非静默受权) |
1.返回顶部 |
用户在微信客户端中访问第三方网页,公众号能够经过微信网页受权机制,来获取用户基本信息,进而实现业务逻辑。前端
微信的受权登陆在平常应用中应用的很是普遍,愈来愈多的平台支持用户使用微信进行受权第三方登陆数据库
使用微信受权登陆有哪些优点/好处;小程序
一、用户量足够大,基本全部用户都会有微信,登陆起来比较方便快捷;api
二、微信做为一个开放平台,为众多公众号/服务开放了许多服务接口,让公众号可以为本身的用户提供更加个性、更加优质的产品服务;微信
open id 和 union id ,这两个id有什么区别;app
一、open id:在关注者与公众号产生消息交互后,公众号可得到关注者的open id, 同一个用户,在不一样公众号或移动应用下对应有不一样open id标识;url
二、union id:同一个用户,在不一样公众号或移动应用下unionID相同;前提是,如若须要作多个公众号以及移动应用帐户互通,获得惟一身份标识union id,则须要将多个公众号或移动应用在微信开放平台进行绑定,而后咱们才能给拿到union id;spa
因此,若是某个应用或者服务,有联合登陆甚至多个公众应用多帐户互通,能够采用union id来进行帐户体系的用户识别与合并;即微信平台能够经过union id 来进行基于多个公众号之间的帐户体系互通与识别合并;3d
微信联合登陆是怎么登陆的,有几种登陆方式;微信联合登陆和微信受权登陆【受权登陆(非静默受权)与静默受权】code
微信联合登陆;也就是咱们经常使用的微信移动端/PC端之间的扫码登陆,PC端用微信扫码登陆,微信移动端确认受权登陆后,应用能够从微信拿到用户的open id或union id,将微信获取的用户信息与本身帐户体系中的用户身份进行关联;
受权登陆:须要用户确认登陆,这样能够经过用户的我的确认,获取用户全面的信息,不管是否关注相关微信公众号等均可以获取。
静默受权不须要用户确认,只须要用户访问某个网页,属于嵌套在普通网页里的受权形式,可是只能获取到用户的惟一标示openid和union id,没法拿到用户的微信头像、微信名称等我的信息,对于用户的简单认证仍是颇有用的。
如何经过微信帐户体系来作多应用、多平台之间的帐户互通体系;若是某个服务同时分布在多个公众号中,帐户体系如何创建;如何作到用户身份惟一识别;
1)、同一用户不一样公众号/应用下open id不一样,同一用户不一样公众号/应用下unionid相同;
2)、创建应用帐户体系时,经过union来进行多应用/平台之间的用户帐户体系识别与合并;
3)、多应用/平台创建帐户体系时,须要作到惟一user id对应惟一union id;
某个服务,包括移动app端、PC网页端、公众号端服务,那么用户使用微信受权登陆的数据流转流程是怎么样的;
一、用户经过微信受权移动app服务;该应用服务便可经过接口获取用户的union id,这个时候,若是在数据库中没有查到该id,则识别为新用户,直接建立一个user id,该惟一user id与union id 对应;
二、用户经过微信扫码PC端受权联合登录获取PC端服务;该应用服务便可经过接口获取用户的union id,这个时候,在数据库中查到有这个id,就会把pc登陆这个帐户合并到以前建立的惟一user id帐户下;
三、用户经过关注该服务公众号,用微信受权登陆公众号服务;该应用服便可经过接口获取用户的union id,这个时候,在数据库中查到有这个id,就会把公众号中登陆的这个帐户合并到以前建立的惟一user id帐户下;
网页受权的两种scope的区别说明:
一、受权登陆以snsapi_base为scope发起的网页受权,是用来获取进入页面的用户的openid的,而且是静默受权并自动跳转到回调页的。用户感知的就是直接进入了回调页(每每是业务页面)特色:用户无感知;
二、静默受权以snsapi_userinfo为scope发起的网页受权,是用来获取用户的基本信息的。但这种受权须要用户手动赞成,而且因为用户赞成过,因此无须关注,就可在受权后获取该用户的基本信息。
特殊场景下静默受权:
对于已关注公众号的用户,若是用户从公众号的会话或者自定义菜单进入本公众号的网页受权页,即便是scope为snsapi_userinfo,也是静默受权,用户无感知。
网页受权流程:
一、引导用户进入受权页面赞成受权,获取code
确保微信公众帐号拥有受权做用域(scope参数)的权限的前提下引导用户去受权页面
参考连接:
scope为snsapi_base
注意:appid,redirect_uri,state这些要和后台协商好
https://open.weixin.qq.com/connect/oauth2/authorize?appid="+wx_appid+"&redirect_uri="+api.wx_reg+"&response_type=code&scope=snsapi_login,snsapi_userinfo&state=1,0#wechat_redirect
scope为snsapi_userinfo
https://open.weixin.qq.com/connect/oauth2/authorize?appid="+wx_appid+"&redirect_uri="+api.wx_reg+"&response_type=code&scope=snsapi_base,snsapi_userinfo&state=1,0#wechat_redirect
用户赞成受权后
若是用户赞成受权,页面将跳转至 redirect_uri/?code=CODE&state=STATE。
二、经过code换取网页受权access_token(后台操做)
页面跳回跳的url上redirect_uri/?code=CODE&state=STATE。code
经过code换取的是网页受权access_token,若是网页受权的做用域为snsapi_base,则本步骤中获取到网页受权access_token的同时,也获取到了openid,snsapi_base式的网页受权流程即到此为止。
3:须要我的信息。后台经过code获得值以后返回给前端去操做
2.返回顶部 |
3.返回顶部 |
4.返回顶部 |
5.返回顶部 |
6.返回顶部 |
7.返回顶部 |
8.返回顶部 |
9.返回顶部 |
10.返回顶部 |
11.返回顶部 |
![]() |
做者:ylbtech 出处:http://ylbtech.cnblogs.com/ 本文版权归做者和博客园共有,欢迎转载,但未经做者赞成必须保留此段声明,且在文章页面明显位置给出原文链接,不然保留追究法律责任的权利。 |