在微信开放平台中,UnionID
和 OpenID
是用于标识用户身份的关键字段,但二者使用场景和作用范围有本质区别。以下是详细对比:
字段 | OpenID | UnionID |
---|---|---|
作用范围 | 单应用内唯一(如一个小程序或公众号) | 跨同一开放平台下所有应用唯一 |
用途 | 识别同一用户在同一应用内的身份 | 识别同一用户在不同应用(同主体)中的身份 |
获取条件 | 用户访问应用即可获得 | 需满足以下条件: 1. 应用绑定到同一开放平台 2. 用户已关注/使用过同主体的至少一个其他应用 |
123
,在公众号B中的 OpenID 是 456
(即使两者属于同一公司)。字段 | 获取途径 |
---|---|
OpenID | 用户授权后,通过 wx.login() (小程序)或 OAuth2.0 接口(公众号)直接返回。 |
UnionID | 以下任一方式: 1. 用户访问同主体多个应用后,从用户信息接口中获取 2. 通过 getPhoneNumber 接口(需用户主动触发)3. 在微信开放平台绑定应用后,调用 /sns/oauth2/access_token 接口(公众号) |
),通过手机号授权接口间接获取。维度 | OpenID | UnionID |
---|---|---|
唯一性范围 | 单应用内唯一 | 同开放平台下跨应用唯一 |
用户关联能力 | 仅限当前应用 | 打通同主体所有应用 |
开发必要性 | 基础必用字段 | 需跨应用互通时使用 |
数据价值 | 低(孤立数据) | 高(用户全景画像) |
简单记忆:
OpenID
= 用户在某应用的“工号”
UnionID
= 用户在集团公司的“员工ID”