一、背景与目的下边这篇文章笔者将介绍在用户系统账号与微信账号一对多的情况下,如何设计来实现数据的互通的相关信息。有需要了解相关信息的同学可以了解了解。
如果我们系统的用户账号与微信账号是一对一的关系,那么我们可以轻松地将系统数据与微信生态应用中的数据联通起来。
但是由于业务需求或特殊情况,我们的用户系统账号与微信账号往往无法保持一对一的映射关系,例如允许用户在小程序之间切换账号,或者将多个系统子账号的通知推送到同一个微信公众号中。本文将介绍在用户系统账号与微信账号一对多的情况下,如何设计来实现数据的互通。
二、方案设计1. 微信用户体系调研
对于同一个用户,在同一个微信开放平台账号下的不同移动应用、网站应用和公众号(包括小程序)中,OpenID不同,但UnionID相同。例如,如果您拥有小程序A、小程序B和一个微信公众号,并将它们绑定到同一个微信开放平台账号下,当微信用户进入小程序A、小程序B或公众号时,他们获得的UnionID是相同的。这意味着可以根据UnionID查询当前微信用户在同一开放平台下的每个小程序或公众号中的数据,从而实现了数据的高效共享。
2. 设计思路
- 为满足业务需求,应允许一个UnionID绑定多个UserID;
- 根据微信用户体系调查,应允许一个UnionID对应多个不同应用(在同一开放平台下)的OpenID,并且确保UnionID和各个OpenID之间具有唯一性(即一个UnionID对应不同应用的OpenID不会重复);
- 为提高产品易用性并降低用户操作成本,UserID、UnionID和OpenID之间的关联操作应灵活,不要求用户按照特定顺序执行。例如,用户可以先关注公众号,然后登录小程序以完成关联,也可以通过登录小程序后再关注公众号来完成关联;
- 为确保账户信息的安全性和操作准确性,不允许一个UserID绑定多个UnionID。当UserID已经关联了一个UnionID时,应将其更新为当前登录的UnionID和OpenID;
- 在数据新增和更新时,应同时将UserID和UnionID作为主键,以避免一个UserID对应多个UnionID的数据存在。
3. 设计方案
根据上述解决方案思路,我们为以下4个场景进行了详细设计:登录小程序、通过Web扫码关注公众号、通过微信关注公众号以及取消关注公众号。通过这些设计,我们实现了以下效果:
- 一个微信账号可以登录多个系统账号,并且多个系统账号的信息可以推送至该微信的公众号中。
- 用户可以在这4个场景中随意执行,不受顺序限制,而仍然能够确保系统账号与小程序、公众号的准确关联。
登录小程序场景: