微信开发中 openID 与 unionID 的区别

今天想介绍关于OpenID和UnionID这两个ID的理解方式。

官网解释

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就可以明确知道是小明这一个人。

总结

你的点赞和关注,是对我们最大的鼓励!

喜欢就关注我们吧!

作者简介:土拨鼠,芦苇科技web前端开发工程师,代表作品:飞花亭小程序、续航基因、YY表情红包、YY叠方块直播竞赛小游戏。擅长网站建设、公众号开发、微信小程序开发、小游戏、公众号开发,专注于前端框架、服务端渲染、SEO技术、交互设计、图像绘制、数据分析等研究,有兴趣的小伙伴来撩撩我们~ web@talkmoney.cn

访问 www.talkmoney.cn 了解更多