在开发微信相关的服务(如小程序,公众号,微信开放平台等)时,很多人都会接触到几个看起来相似但实际用途不同的额ID: AppiD, OpenID,UnionID. 搞清楚这三者的区别,是微信生态开发中的基本功,本文将从开发者视角触发,深入浅出地解释它们的关系,区别以及实际应用场景
AppID(应用ID)是微信平台分配给每一个应用的唯一身份标识
每个AppID都代表一个"应用实例",开发者在调用微信相关接口时(如登录授权,支付,模版消息等),都需要提供对应的AppID和AppSecret
举个例子: 你做了一个公众号 + 一个小程序,它们就分别有自己的AppID,互相独立
51b6e0bcc165904f6a232b3b3db62286
微信小程序的AppSecret(小程序秘钥)是微信开放平台提供给开发者的一种安全机制,用于保护小程序的数据安全和验证开发者身份
具体可以进行: 身份验证,获取 access_token,数据加密,服务器简通信,数据安全等
OpenID是微信为用户在某个"AppID"下生成的唯一标识
假设一个用户的微信号是 wx_user001:
平台 | AppID | 用户 OpenID |
---|---|---|
你的小程序 | wx_appid_123 |
openid_abc123 |
你的公众号 | wx_appid_456 |
openid_def456 |
他们代表的是同一个人,但OpenID不一样,这是微信用来隔离用户数据的设计
unionID 是在你注册了"微信开放平台"之后,微信为同一个用户在多个AppID下提供的统一身份标识
你有一个小程序+一个公众号+一个网页扫码登录(开放平台)
如果这三个都绑定了同一个微信开放平台账号,并且用户都登陆过,
你就可以通过unionId确定是"同一个人"
+--------------------------+
| 微信开放平台 |
|(绑定多个 AppID 实例) |
+--------------------------+
|
+----------------------------+
| 同一用户的 UnionID |
+----------------------------+
/ | \
+--------+ +---------+ +----------+
| 小程序A | | 公众号B | | 网页登录C |
+--------+ +---------+ +----------+
| | |
OpenID_a OpenID_b OpenID_c
场景 | 推荐使用的 ID | 原因说明 |
---|---|---|
小程序中识别用户 | OpenID | 唯一且直接可获取 |
公众号内用户识别 | OpenID | 同上 |
跨平台整合用户数据(公众号+小程序) | UnionID | 多平台用户打通 |
后端统一用户表的主键 | 自定义 user_id + UnionID | 避免 ID 冲突,可扩展 |
AppID是应用的身份,OpenID是用户在某个应用下的身份,UnionID是同一用户在多个应用下的统一身份