首先来看一下微信官方的解释
为了识别用户,每个用户针对每个公众号会产生一个安全的OpenID,如果需要在多公众号、移动应用之间做用户共通,则需前往微信开放平台,将这些公众号和应用绑定到一个开放平台账号下,绑定后,一个用户虽然对多个公众号和应用有多个不同的OpenID,但他对所有这些同一开放平台账号下的公众号和应用,只有一个UnionID,可以在用户管理-获取用户基本信息(UnionID机制)文档了解详情。
AppID:一个AppID唯一对应一个小程序(或公众号),尽管一个AppID可以开发多个小程序(或公众号),但是最终提交审核和上线的只能是一个小程序(或公众号)
OpenID:微信用户在某个小程序(或公众号)的唯一标识,用于获取用户信息,通过应用AppID+用户微信号加密来生成
UnionID:同一个用户在同一个开放平台账号下的不同的应用(小程序或者公众号)的UnionID是相同的,可以用来用户量去重
如果还是不明白,来看下面的例子:
由此可见:
- OpenID 的生成与微信号和AppID有关(具体实现细节可能是,当一个微信用户关注一个公众号之后,会由AppID和微信号共同生成OpenID)
- UnionID 的生成与微信号和开放平台账号有关(具体实现细节可能是,当一个微信用户关注一个公众号之后,会根据该公众号查询开放平台账号,然后由开放平台账号和微信号共同生成UnionID)