关于微信授权登录
随着微信连接一切的能力在越来来殷实, 我们发现越来越多的平台支持用户使用微信进行授权第三方登录,在顺应这个联合登录的趋势的同时,也有越来越的平台选择用微信的联合授权登录作为仅次于QQ、微博等第三方授权登录的第三个选择,甚至有超越前两者之势;
1、使用微信授权登录有哪些优势/好处;
1)、用户量足够大,基本所有用户都会有微信,登录起来比较方便快捷;
2)、微信作为一个开放平台,为众多公众号/服务开放了许多服务接口,让公众号能够为自己的用户提供更加个性、更加优质的产品服务;
2、讨论微信授权登录,我们就不得不关注微信账号体系的两个id:open id 和 union id;
1)、在关注者与公众号产生消息交互后,公众号可获得关注者的open id;
2)、如果开发者有在多个公众号、公众号、移动应用之间统一用户帐号的需求,需要前往微信开放平台(open.weixin.qq.com)绑定公众号后,才可利用union id机制来满足上述需求;
union id机制的作用说明:如果开发者拥有多个移动应用、网站应用和公众帐号,可通过获取用户基本信息中的unionid来区分用户的唯一性,因为同一用户,对同一个微信开放平台下的不同应用(移动应用、网站应用和公众帐号),unionid是相同的;
3、open id 和 union id ,这两个id有什么区别;
1)、open id: 同一个用户,在不同公众号或移动应用下对应有不同open id标识;
2)、 union id:同一个用户,在不同公众号或移动应用下unionID相同;前提是,如若需要做多个公众号以及移动应用账户互通,得到唯一身份标识union id,则需要将多个公众号或移动应用在微信开放平台进行绑定,然后我们才能给拿到union id;
所以,如果某个应用或者服务,有联合登录甚至多个公众应用多账户互通,可以采用union id来进行账户体系的用户识别与合并;即微信平台可以通过union id 来进行基于多个公众号之间的账户体系互通与识别合并;
4、了解了微信账户体系的两个id之间的关系,微信联合登录是怎么登录的,有几种登录方式;
1)、微信联合登录;也就是我们常用的微信移动端/PC端之间的扫码登录;
在PC端用微信扫码登录,微信移动端确认授权登录后,应用可以从微信拿到用户的open id或union id,将微信获取的用户信息与自己账户体系中的用户身份进行关联;
2)、微信授权登录;微信授权登录有两种;
a)、点击授权登录;
需要登录时,页面跳转到授权页面,也就是我们经常看到的绿色授权页面,用户授权后可从微信拿到open id、union id;
b)、静默授权;
静默授权下,不需要跳转页面让用户确认授权,而是直接授权用户登录;但是需要注意的是,静默授权只能拿到用户的open id和union id,无法拿到用户的微信头像、微信名称等个人信息;
5、微信作为一个社交的账号体系,其他服务使用其作为授权登录的基础,可能会产生什么问题;
1)、由于微信开放给第三方的信息维度限制,应用通过微信授权登录无法获取到自建账号体系那样齐全的用户个人信息;
2)、由于很多应用都是在公众号中提供授权登录进行服务透出,就会导致平台账号与微信公众号中账户体系不一致;
3)、由于很多应用都需要用户进行绑定手机操作,那么就会由于openid的原因导致用户进行重复绑定;
6、如何通过微信账户体系来做多应用、多平台之间的账户互通体系;如果某个服务同时分布在多个公众号中,账户体系如何建立;如何做到用户身份唯一识别;
1)、同一用户不同公众号/应用下open id不同,同一用户不同公众号/应用下unionid相同;
2)、建立应用账户体系时,通过union来进行多应用/平台之间的用户账户体系识别与合并;
3)、多应用/平台建立账户体系时,需要做到唯一user id对应唯一union id;
7、如果某个服务,包括移动app端、PC网页端、公众号端服务,那么用户使用微信授权登录的数据流转流程是怎么样的;
1)、用户通过微信授权移动app服务;该应用服务即可通过接口获取用户的union id,这个时候,如果在数据库中没有查到该id,则识别为新用户,直接创建一个user id,该唯一user id与union id 对应;
2)、用户通过微信扫码PC端授权联合登陆获取PC端服务;该应用服务即可通过接口获取用户的union id,这个时候,在数据库中查到有这个id,就会把pc登录这个账户合并到之前创建的唯一user id账户下;
3)、用户通过关注该服务公众号,用微信授权登录公众号服务;该应用服即可通过接口获取用户的union id,这个时候,在数据库中查到有这个id,就会把公众号中登录的这个账户合并到之前创建的唯一user id账户下;
8、如果某个服务同时分布在多个公众号中,当用户进行手机绑定时,如何判断用户重复绑定问题;
1)、由于同一用户不同公众号/应用下open id不同,如果账户体系中只有唯一user id对应open id,就会产生同一个微信号在同一个公众号中绑定不同手机号,所以需要做到唯一userid对应唯一union id,避免同一个微信号在同一个公众号中用不同手机重复绑定;
2)、由于同一用户不同公众号/应用下unionid相同,同一个微信号在多个不同公众号中,只能通过同一个手机号绑定;如果在某个公众号A中绑定了手机号139,又去另一个公众号B绑定手机号138,这个时候系统就需要做判断,同一个union id只能绑定一个手机号,就需要提示用户之前通过微信账户体系绑定过其他手机号;