背景
线上项目一开始PC端由微信网页授权实现,都是使用openid作为用户标识,但后期又增添了微信小程序的开发。这就出现了问题,因为微信应用之间openid是不一致的,用户信息无法统一。所以只能改为使用unionid作为用户唯一标识,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号,用户的unionid是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,unionid是相同的。
实现
分为三步
1.PC端网页授权登录认证,当用户第一次登录时要由存储openid改为unionid。
微信官方文档
这里用户扫码后用code换取openid,再用openid换取unionid,将unionid存到本地库就可以了。
2.因为项目已经上线,用户表里存在一批老用户,它们只有openid没有unionid,同样用上面的API,批量请求拿到unionid再存到用户表就可以了。
3.这里说的就是小程序获取unionid了,调用 wx.login拿到code,用code调用服务端接口获取unionid,服务端调用的Api是这个。