微信开发中 openID 与 unionID 的区别

官网解释

OpenID

用户惟一标识,请注意,在未关注公众号时,用户访问公众号的网页,也会产生一个用户和公众号惟一的OpenID小程序

UnionID

经过获取用户基本信息接口,开发者可经过OpenID来获取用户基本信息,而若是开发者拥有多个公众号,可以使用如下办法经过UnionID机制来在多公众号之间进行用户账号互通。只要是同一个微信开放平台账号下的公众号,用户的UnionID是惟一的。换句话说,同一用户,对同一个微信开放平台账号下的不一样应用,UnionID是相同的。微信

理解方式

微信号

假设微信号是咱们做为微信用户的惟一标识,那么
用户 A 的微信号是 _1232sdasf ,用户 B 的微信号是 helloBBBBB
那咱们在获取用户微信的时候,微信确定不会返回具体的微信号给咱们,对吧?
为何不呢?若是返回微信号,那咱们就能够根据微信号来加不少不少不少人啦~~~
想一想微信号落入了有心机的人手里,是件多麽可怕的事....
因此,在用户受权的信息中,是不会涉及到微信号的信息的。
那经过什么来识别用户呢?
请继续往下看 ↓↓↓↓↓↓↓网站

OpenID

申请公众号、小程序的时候,都有一个 APPID,这个是当前帐号的标识。另外还有一个APPSERECT,用于解密数据使用。
OpenID就是用户在某一公众平台下的标识。加密

OpenID = 用户微信号 & 公众平台APPID(两个数据加密获得的字符串)

举个🌰
小明微信号是 T1928738ss,公众号 A 是 A商城,公众号 B 是 B商城。
此时进入 A 商城,则 A 商城获取到的小明的 openID 是 33487793847837734,
此时进入 B 商城,则 B 商城获取到的小明的 openID 是 48423948753248900,
小明在A和B商城之间拥有不一样的身份标识,且身份标识是惟一的
也就是说,在一个公众号内,无论进入了多少次,仍是一个 openID
同理,小明在进入小程序C、小程序D、公众号F ... 这些系统中,其实后台获取到的OpenID 都是不一样的。
那么,若是一个商家,既想在公众号上作商城,也想在小程序端作一个商城,小明进入以后,会产生两个不一样的OpenID,岂不是有两个小明用户?这十分奇怪吧... 简单想像一下,你从公众号里进入一个网页版的拼夕夕商城,帐号里有10的拼豆,可是进入小程序版的拼夕夕商城,帐号里只有1个拼豆,是否是很茫然?是谁模仿了个人帅.....
那么为了防止这样的“怪异”现象发生,咱们要解决的问题是:要如何肯定小明这我的在进入“同一个”商城中,是“同一个”用户呢?
请继续往下看 ↓↓↓↓↓↓↓spa

UnionID

先引出一个开放平台的概念接口

微信开放平台做为第三方移动程序提供接口,使用户可将第三方程序的内容发布给好友或分享至朋友圈,第三方内容借助微信平台得到更普遍的传播。从而造成了一种主流的线上线下微信互动营销方式。

结合UnionID 的解释开发

UnionID机制的做用说明:若是开发者拥有多个移动应用、网站应用和公众账号,可经过获取用户基本信息中的unionid来区分用户的惟一性,由于同一用户,对同一个微信开放平台下的不一样应用(移动应用、网站应用和公众账号),unionid是相同的。

开放平台的功能有不少,不过咱们今天的目标就是要把公众号和小程序链接在同一个开放平台下。
在申请开放平台的时候,也获得这个开放平台的 APPID 和 APPSERECT。rem

UnionID = 用户微信号 & 开放平台APPID(两个数据加密获得的字符串)

把公众号和小程序链接在同一个开放平台下以后,不管小明从小程序进入,仍是从公众号进入,在后台获取信息中就会获得的openID和UnionID,OpenID是不一样的,UnionID 是相同的,经过UnionID就能够明确知道是小明这一我的。字符串

总结

  • OpenID 是 微信号与公众平台APPID 加密后获得的用户标识。
  • UnionID 是 微信号与开放平台APPID 加密后获得的用户惟一标识,前提是各个公众平台须要先绑定到同一个开放平台,才能从各平台中获取到同一个UnionID。