在接触微信开发者平台过程中,耳边时常环绕着几个词:AppID、OpenID,以及UnionID;在一路的慢慢摸索后,记录下我的理解,希望对以后有所帮助。
AppID
在微信开放平台(open.weixin.qq.com),为一系列应用提供了接口,来帮助开发者开发,但这些接口并不能随便调用,至少需要AppID,以及其对应的AppSecret来获取使用权限,类似于账号密码,那这些信息从哪里获得呢?
在公众平台(mp.weixin.qq.com)中,如 "微信公众号"(下方都以公众号为例),有着其唯一的AppID和AppSecret,可以后台中查看,这样开发者们就有途径去使用开放平台提供的各种接口;
总结一句话就是:每一个公众平台的应用,都对应着唯一的AppID。那什么是OpenID呢?
OpenID
对于公众平台应用的开发者和运营者,最想关心的一件事,就是 "谁在使用?" 简单的方式是直接使用用户的微信名/微信号,但这明显是不合理的,万一数据库被攻破用户隐私怎么办、用户修改后同步等等问题,为了规避这样的风险,所以需要另外的符号来标识用户;
因此,OpenID诞生了,微信开放平台会给每个公众号下的用户都生成一个OpenID,其值是固定且唯一的,它让用户信息以更加安全的方式进入了大家的视野;但是有一点是需要区分的,不同公众号下的相同用户,其OpenID是不同的,他们的数据是不互通的,这样会稍显奇怪;
如上所说,OpenID也是存在缺陷的,那么什么场景下OpenID的能力会凸显不足呢?
UnionID
假想自己是资深的开发者,自己名下许多不同的公众号,某一天你想对你名下应用的所有用户进行分析,但是不同公众号的用户数据相互隔离,如果仅仅依靠OpenID,你很难完成这件事;
所以微信后续引入了UnionID的概念,简单理解为同一开发者名下所有公众号中,相同用户的UnionID是一致的,这样就解决了这个问题,可以通过UnionID连接用户;
但是并不推荐仅仅使用UnionID标记用户,因为UnionID是和开发者相关,如果更换开发者的话,那么你将遇到大麻烦。