理解微信体系中的 AppID、OpenID 和 UnionID

前言: 

在开发微信相关的服务(如小程序,公众号,微信开放平台等)时,很多人都会接触到几个看起来相似但实际用途不同的额ID: AppiD, OpenID,UnionID. 搞清楚这三者的区别,是微信生态开发中的基本功,本文将从开发者视角触发,深入浅出地解释它们的关系,区别以及实际应用场景

一.什么是AppID?

AppID(应用ID)是微信平台分配给每一个应用的唯一身份标识 

常见类型包括: 
  • 公众号AppID: 服务号 / 订阅号
  • 小程序AppID 
  • 开放平台AppID:用于网站登录,第三方平台

每个AppID都代表一个"应用实例",开发者在调用微信相关接口时(如登录授权,支付,模版消息等),都需要提供对应的AppID和AppSecret

举个例子: 你做了一个公众号 + 一个小程序,它们就分别有自己的AppID,互相独立

AppSecret

51b6e0bcc165904f6a232b3b3db62286

微信小程序的AppSecret(小程序秘钥)是微信开放平台提供给开发者的一种安全机制,用于保护小程序的数据安全和验证开发者身份
具体可以进行: 身份验证,获取 access_token,数据加密,服务器简通信,数据安全等 

二、什么是OpenID?

OpenID是微信为用户在某个"AppID"下生成的唯一标识

特点:

  • 同一个用户,在不同AppID(比如你的公众号和你的小程序)下的OpenID是不同的
  • 也就是说,OpenID是针对 AppID的唯一标识

举例: 

假设一个用户的微信号是 wx_user001:

平台 AppID 用户 OpenID
你的小程序 wx_appid_123 openid_abc123
你的公众号 wx_appid_456 openid_def456

 他们代表的是同一个人,但OpenID不一样,这是微信用来隔离用户数据的设计 

三. UnionID又是啥?

unionID 是在你注册了"微信开放平台"之后,微信为同一个用户在多个AppID下提供的统一身份标识

获取条件: 
  • 你的小程序/公众号绑定到了同一个开发平台账号
  • 用户必须通过授权接口获取(比如 getUserInfo返回中才可能带上)

特点: 

  • 同一个用户,只要在你名下的任意AppID下登录过,就可以拿到相同的 UnionID
  • 前提是这写AppID都绑定到了同一个微信开放账号 

举例:

你有一个小程序+一个公众号+一个网页扫码登录(开放平台)

如果这三个都绑定了同一个微信开放平台账号,并且用户都登陆过,

你就可以通过unionId确定是"同一个人"

4.三者关系总结图

         +--------------------------+
         |       微信开放平台        |
         |(绑定多个 AppID 实例)     |
         +--------------------------+
                    |
        +----------------------------+
        |      同一用户的 UnionID     |
        +----------------------------+
            /           |         \
      +--------+   +---------+  +----------+
      | 小程序A |   | 公众号B  |  | 网页登录C |
      +--------+   +---------+  +----------+
        |              |              |
    OpenID_a      OpenID_b      OpenID_c
 

五. 实际开发中的应用场景

场景 推荐使用的 ID 原因说明
小程序中识别用户 OpenID 唯一且直接可获取
公众号内用户识别 OpenID 同上
跨平台整合用户数据(公众号+小程序) UnionID 多平台用户打通
后端统一用户表的主键 自定义 user_id + UnionID 避免 ID 冲突,可扩展

六、常见坑和注意事项

1. unionID 获取不到?

  • 用户没有授权 getUserInfo 
  • 没绑定开放平台账号
  • 用户没关注公众号(老接口)
  • 没有绑定邮箱验证的开放平台账号

2.为什么同一个人有两个OpenID?

  • 因为OpenDI是针对AppID的,换个小程序/公众号就变了

3.如果只有一个平台,用不用关心 UnionID?

  • 不需要, OpenID 就足够了

七、总结一句话: 

AppID是应用的身份,OpenID是用户在某个应用下的身份,UnionID是同一用户在多个应用下的统一身份 

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