微信授权调用途径目前有4种:
- 网页调用。在微信浏览器中发起授权,调出授权页面。
- 小程序调用。在小程序中发起授权,调出授权页面。
- 扫码调用。web 页面生成授权二维码,微信“扫一扫”扫码调出授权页面。
- App 跳转调用。在 App 中发起授权,跳转到微信并调出授权页面。
目前通过微信授权能够获取到的授权信息大多是技术参数,产品经理主要需要关注以下几个重点的信息:
- 头像。
- 昵称(用户名,非真实姓名)。
- 性别。
- 国家。
- 地区(用户资料中填写的省份和市区)。
- 手机号(通过手机号授权方式才能获取到)。
有一些产品经理害怕接入微信授权登录需要对现有产品的用户体系进行大改,所以有必要简单介绍一下微信授权的技术原理。
业务系统接入微信授权后,在授权发生时,业务系统会接到微信接口提供的用户身份码(openid),这是用户身份的唯一标识,业务系统只需要在首次授权时,将该身份码绑定到对应的用户上,下次授权再次发生时,如果该身份码已绑定账号,即可登录对应账号。
简单的授权登录流程:
结合上述技术原理,可以用流程图来画一个简单的授权登录流程。
以上流程只适用于只有微信授权登录一种登录方式的业务系统,目前的大多数产品都支持多种登录方式,实际场景要比这复杂得多。
五、复杂场景的授权登录设计很多平台都是先做了常规的注册登录,之后才接入微信授权登录,所谓的“常规”指的是一般平台比较常用的账号密码登录或当下比较流行的手机验证码登录,平台之前可能已经有了一定用户量,所以在接入授权登录时,需要考虑旧用户的绑定问题。
如果平台原来是通过手机号进行用户注册,现在接入的也是微信的手机号授权,处理旧用户的流程会更简单。
这里虽然是通过手机号授权登录,但同样建议将获取到的 openid 绑定到对应的用户上,刚刚说过,目前手机号授权登录只能在小程序中使用,如果不绑定 openid,在其他端口进行授权时,就无法识别到已经授权成功的用户。
上面的流程有一个致命的问题不知道你发现没有,就是授权获取的手机号在平台中的账号如果已经绑定了另外一个微信用户的 openid,按照上述流程,当前微信用户通过手机号授权可以登录该账号,但如果通过其他授权方式登录,就登录不了了。
这个问题有两种优化方案,第一种简单粗暴,不做判断,只要验证通过就将当前微信用户的 openid 绑定上去。