微信开发中 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个拼豆,是不是很茫然?是谁模仿了我的帅.....
那么为了防止这样的“怪异”现象发生,我们要解决的问题是:要如何确定小明这个人在进入“同一个”商城中,是“同一个”用户呢?
请继续往下看 ↓↓↓↓↓↓↓

UnionID

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

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

结合UnionID 的解释

UnionID机制的作用说明:如果开发者拥有多个移动应用、网站应用和公众帐号,可通过获取用户基本信息中的unionid来区分用户的唯一性,因为同一用户,对同一个微信开放平台下的不同应用(移动应用、网站应用和公众帐号),unionid是相同的。

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

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

把公众号和小程序连接在同一个开放平台下之后,无论小明从小程序进入,还是从公众号进入,在后台获取信息中就会得到的openID和UnionID,OpenID是不同的,UnionID 是相同的,通过UnionID就可以明确知道是小明这一个人。

总结

  • OpenID 是 微信号与公众平台APPID 加密后得到的用户标识。
  • UnionID 是 微信号与开放平台APPID 加密后得到的用户唯一标识,前提是各个公众平台需要先绑定到同一个开放平台,才能从各平台中获取到同一个UnionID。
    微信开发中 openID 与 unionID 的区别_第1张图片

你可能感兴趣的:(微信小程序)