不管你准备开发小程序还是公众号,开发之前一定要了解他们的唯一标识也就是我们说的openID和unionID,及他们之间的区别和作用。唯一标识非常重要,在项目的全局都起着决定性的作用,一定要先搞清楚他们之间的关系,否则后患无穷。
openID
openID是每个不同类型的应用他都会对应一个唯一的openID。例如拿公众号openID和小程序openID是互不干扰的:
为了识别用户,每个用户针对每个公众号或小程序等应用会产生一个安全的OpenID
- 在小程序中,openID是小程序的普通用户的一个唯一的标识,只对当前的小程序有效
- 同理在公众号中openID是公众号的普通用户的一个唯一的标识,只对当前的公众号有效
同一个微信用户在小程序和公众号上的openid是不同的
unionID
官网解释:如果开发者拥有多个移动应用、网站应用、和公众帐号(包括小程序),可通过 UnionID 来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号(包括小程序),用户的 UnionID 是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,UnionID是相同的。
简而言之,unionid是用来说明多个应用下用户身份一致性的问题。相比较而言,由于在同一个应用下每个用户的openid是唯一的,因此openid也是也可以用来标记用户身份,但是仅限于在同一个应用中。对于不同的应用,每个用户的openid是不一样的,要想在不同应用间识别用户的唯一性只可以用unionid。
案例
小陈的微信开方平台上有一个公众号A和小程序C。
用户小周访问公众号A,则会生成openIDA,这个openIDA在公众号应用中是唯一的。
小周又访问小程序C,则会生成openIDC,这个openIDC在小程序应用中是唯一的。
如果小陈想确认微信开方平台上公众号A上的小周和小程序C上的小周是否同一个用户小周,此时就需要用户的unionID来解决这个问题。所以unionID用来确定不同应用下用户的唯一性。
总结
简单总结下:
openID就是同一用户在同一个应用上的唯一标识;
unionID就是同一用户在不同应用上的唯一表示,也就是说不同应用之间判断是否同一个用户就找unionID。
关于openID和unionID,建议认准下面两点就能判定是否会变化。
- openID只跟APPID相关,只要对应的公众号(或小程序等)APPID,不变,openid就不变。
- unionID只跟开放平台账号相关,只要对应的公众号(或小程序等)没有换绑微信开放平台,unionid就不变。