背景说明
最近需要做一个招聘类的小程序,其中支持登录用户可以进行求职和招聘角色切换.第一个面临的问题是基于一个小程序还是两个小程序的问题,由于求职端和招聘端用户登录之后底部显示的页签模块是不一样的,在一个小程序中是不容易进行动态切换的;另外基于小程序大小的考虑,后期如何内容过多,一个小程序需要进行多次分包.所以考虑到上面两点决定注册两个小程序,一个用来作为求职端,一个用来作为招聘端,根据角色进行动态切换进入到不同的小程序,对于用户来讲,基本上是无感知的;注册两个小程序带来的问题就是如何保证用户在两个小程序之间切换保证用户信息唯一的问题,也是本文要讨论的核心内容.
处理过程
产品经理说的很清楚,不能使用手机号作为唯一标识,因为一个用户可能会有多个手机号,并且不支持实名认证,所以基于手机号作为唯一标识逻辑就不成立;
如果是一个小程序,还好处理,openId可以作为用户的唯一标识(每个小程序对应一个appid,对于进入同一个小程序的所有用户来讲,每个用户的openID是唯一的);但是两个小程序出现的问题是,两个小程序的appid不同,用户在每个小程序下面的openId都不一样,所以对于两个小程序使用openId作为用户的唯一标识也不成立.
仔细翻看小程序开发文档发现:如果开发者拥有多个移动应用、网站应用、和公众帐号(即公众号和小程序),可通过 UnionID 来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号,用户的 UnionID 是唯一的. 即同一用户,对同一个微信开放平台下的不同应用,UnionID是相同的。也就是说只要是微信旗下的产品,不论是小程序还是公众号还是其他的,用户的unionId是唯一的.
确定好实现方案之后就开始用之前两个小程序号进行测试获取用户的unionId是否唯一(两个新的小程序还没有注册下来所以只能用之前的进行测试).
测试过程中出现问题:一个小程序是已经上线,发布过正式版本;一个是只是注册过,没有发布过正式版本,
发现前者能获取到unionid,后者就获取不到,
当时前端尝试了很多方案都是获取不到,怀疑是这个小程序没有上线的原因;这里说一下对于对接第三方接口,一定要好好看官方提供的接口文档,一定要好好看!!!
重新看了一下关于响应参数:unionid的说明:用户在开放平台的唯一标识符,若当前小程序已绑定到微信开放平台帐号下会返回,详见 UnionID 机制说明官方文档 。里面说的很清楚,当前小程序需要绑定微信开放平台啊,这个链接中说的很清楚,三种获取unionId的方式以及开放平台中添加小程序的步骤:
添加之后发现可以,问题解决!
注意获取unionId无需用户授权就可以获取.也就是说用户刚进入小程序的时候不进行授权操作就能获取用户的unionId和openID.
以上是处理多个小程序确定用户唯一标识的处理过程以及实现方案,当然也可以拓展到微信旗下的各个产品,其他的暂时没有尝试,应该都是相同的,如果感觉有帮助欢迎关注或是评论留言点赞!
参考文档:
UnionID 机制说明官方文档
auth.code2Session服务端调用接口官方文档