乐趣区

关于前端:AppIDUnionID-和-OpenID-傻傻分不清楚



AppID、UnionID 和 OpenID 傻傻分不清楚

目前互联网利用的推广和流传都离不开微信,进而理解微信相干生态非常重要,本文次要率领大家一起梳理一下微信生态下的 微信开放平台 微信公众平台 微信小程序AppIDUnionID 以及 OpenID,从此让你明明白白做人。

微信公众平台(OpenID)

  1. 会给微信用户生成 OpenID
  2. 不论是 微信公众号 还是 微信小程序 ,二者都是在微信公众平台进行治理的,所以他俩就放一起讲,为了辨认用户,每个微信用户针对每个 公众号 或者 小程序 会产生一个平安的 OpenID

举个🌰

你们公司有

3 个公众号:公众号 A、公众号 B、公众号 C;

3 个小程序:小程序 A、小程序 B、小程序 C;

那么针对同一微信用户,这六个平台会别离为这个用户各生成一个惟一的 OpenID

看起来是这样的👇🏻:

公众号 A 👉 微信用户 A 👉 OpenID_1

公众号 B 👉 微信用户 A 👉 OpenID_2

公众号 C 👉 微信用户 A 👉 OpenID_3

小程序 A 👉 微信用户 A 👉 OpenID_4

小程序 B 👉 微信用户 A 👉 OpenID_5

小程序 C 👉 微信用户 A 👉 OpenID_6

微信开放平台(UnionID)

  1. 会给微信用户生成 UnionID
  2. 为了辨认用户,每个微信用户针对每个 微信开放平台 会产生一个平安的 UnionID

举个🌰

你们公司因为业务宽泛,同时也开发了三个原生利用:App_A、App_B、App_C;

这三个 App 都须要做微信受权登录,你们就须要将这三个 App 绑定到一个微信开放平台下(同一个开放平台);

那么针对同一微信用户,这个微信开放平台会为这个用户生成一个惟一的 UnionID

❗️❗️❗️敲黑板:

  1. 同一微信用户在 App_A、App_B、App_C 下的 UnionID 是同一个,因为这 3 个 App 绑定在同一个开放平台下;
  2. 因为 App 是间接绑定在微信开放平台下,所以开放平台同时也会为 3 个 App 的同一用户别离生成 3 个 OpenID

看起来是这样的👇🏻:

App_A 👉 微信用户 A 👉 OpenID_7 👉 UnionID_1

App_B 👉 微信用户 A 👉 OpenID_8 👉 UnionID_1

App_C 👉 微信用户 A 👉 OpenID_9 👉 UnionID_1

如果须要在多公众号、小程序、挪动利用之间做用户共通,则需返回微信开放平台,将这些公众号和利用绑定到一个开放平台账号下,绑定后一个用户尽管对多个公众号和挪动利用有多个不同的 OpenID,但他对所有这些同一开放平台账号下的公众号和利用,只有一个 UnionID

此时,看起来是这样的👇🏻:

公众号 A 👉 微信用户 A 👉 OpenID_1 👉 UnionID_1

公众号 B 👉 微信用户 A 👉 OpenID_2 👉 UnionID_1

公众号 C 👉 微信用户 A 👉 OpenID_3 👉 UnionID_1

小程序 A 👉 微信用户 A 👉 OpenID_4 👉 UnionID_1

小程序 B 👉 微信用户 A 👉 OpenID_5 👉 UnionID_1

小程序 C 👉 微信用户 A 👉 OpenID_6 👉 UnionID_1

App_A 👉 微信用户 A 👉 OpenID_7 👉 UnionID_1

App_B 👉 微信用户 A 👉 OpenID_8 👉 UnionID_1

App_C 👉 微信用户 A 👉 OpenID_9 👉 UnionID_1

AppID

另外插一嘴,还有一个货色叫 AppID,此时你的情绪可能是 woc 它又是个什么鬼呢???

还是拿你们公司来说吧,目前你们公司有 3 个公众号、3 个小程序、3 个 App,暂且把它们了解为 9 个不同的利用,那么 AppID 别离就是这 9 个不同利用的惟一标识;

说人话:

  • 通过微信公众平台注册一个 公众号 A,那么 公众号 A 就有一个本人的惟一标识 AppID_1
  • 通过微信公众平台注册一个 小程序 A,那么 小程序 A 就有一个本人的惟一标识 AppID_4
  • 通过微信开放平台绑定一个 App_A,那么 App_A 就有一个本人的惟一标识 AppID_7

看起来是这样的👇🏻:

公众号 A 👉 AppID_1 👉 微信用户 A 👉 OpenID_1 👉 UnionID_1

公众号 B 👉 AppID_2 👉 微信用户 A 👉 OpenID_2 👉 UnionID_1

公众号 C 👉 AppID_3 👉 微信用户 A 👉 OpenID_3 👉 UnionID_1

小程序 A 👉 AppID_4 👉 微信用户 A 👉 OpenID_4 👉 UnionID_1

小程序 B 👉 AppID_5 👉 微信用户 A 👉 OpenID_5 👉 UnionID_1

小程序 C 👉 AppID_6 👉 微信用户 A 👉 OpenID_6 👉 UnionID_1

App_A 👉 AppID_7 👉 微信用户 A 👉 OpenID_7 👉 UnionID_1

App_B 👉 AppID_8 👉 微信用户 A 👉 OpenID_8 👉 UnionID_1

App_C 👉 AppID_9 👉 微信用户 A 👉 OpenID_9 👉 UnionID_1

置信你曾经发现端倪了吧,mou 错:

  • AppID 对应 平台利用
  • OpenIDUnionID 对应 用户

你也能够这么了解,对于 同一用户,一个平台利用的 AppID 就会为他生成一个对应的 OpenID,如果这些平台利用都绑定在同一个 微信开放平台 下,那么这个用户的这些 OpenID 都会对应同一个 UnionID

OpenID 和 UnionID 如何解决

  1. AppID 是不须要咱们存储的,精确来说 它不属于用户数据;
  2. 然而 OpenIDUnionID 就属于用户数据了,是须要作为用户信息进行存储的;

怎么存储❓❓❓

首先咱们曾经晓得了 UnionIDOpenID 是一对多的关系,
同一个开放平台下的多个利用对于同一微信用户所生成的 UnionID 是统一的,
所以 UnionID 就和咱们在用户表里给注册用户生成的 userID 一样,能够作为用户的惟一标识,
然而同一用户别离在多端(小程序、App)登录时的 OpenID 却是多个,
此时咱们就要通过不同端(小程序、App)的标识来把这几个不同的 OpenID 辨别开来关联到 UnionIDuserID 上,
也就是一条用户信息里会蕴含有:1 个 userID、1 个 UnionID、多个能够辨别开来的 OpenID

有人可能会说了,有 UnionID 就行了,为啥还要存储这个不能作为惟一标识的 OpenID 呢,那我来通知你吧,次要就以下几点:

  1. 微信 SDK 的某些 api 可能会用到 OpenID 作为参数;
  2. 之前,OpenID 的获取不须要用户受权就能拿到,然而 UnionID 的获取就须要用户受权批准了之后能力获取到,你不能排除公司的某些业务为了缩短流程链路,不想进行用户受权,所以这个时候就须要用 OpenID 作为以后平台用户的惟一标识来应用了;
  3. 补充一点:当初微信对 UnionID 的获取做了调整,无需受权也能够间接获取到了;
  4. 还有最重要一点,波及到开放平台主体迁徙的时候,OpenID 可是能派上大用场,往下看👇🏻;

微信公众号主体迁徙

具体流程本文不细讲,可查看官网提供的文档:

🔗 微信官网提供的公众号主体迁徙条件及流程文档

🔗 https://kf.qq.com/product/weixinmp.html#hid=2488

❗️❗️❗️次要强调一些注意事项:

  1. 须要用新主体注册一个新的公众号作为指标主体公众号;
  2. AppID 会变,所有波及到的业务逻辑都要变更;
  3. AppSecret 会变,所有波及到的业务逻辑都要变更;
  4. OpenID 会变,然而官网提供了接口,能够将老的 OpenID 映射到新的 OpenID,以供开发者做数据变更 🔗 OpenID 转换接口 🔗 https://kf.qq.com/faq/1901177NrqMr190117nqYJze.html;
  5. 迁徙实现后,用户扫描原账号的二维码会主动跳转到指标账号关注页面,目前仅反对一般二维码的跳转,带参数二维码暂不反对跳转;
  6. 只有不波及到微信开放平台的主体变更,UnionID 就不会变,相干业务逻辑也能够失常应用;

微信小程序主体迁徙

具体流程本文不细讲,可查看官网提供的文档:

🔗 微信官网提供的小程序主体迁徙条件及流程文档

🔗 https://kf.qq.com/product/wx_xcx.html#hid=2790

❗️❗️❗️次要强调一些官网文档没说的注意事项:

  1. AppID 不会变,所以之前生成的 小程序二维码、小程序码 都能够持续应用;
  2. AppSecret 不会变,所以服务端之前写的波及到微信的接口都能够持续应用;
  3. OpenID 不会变,所以之前无关 OpenID 的业务逻辑也能够持续应用;
  4. 只有不波及到微信开放平台的主体变更,UnionID 就不会变,相干业务逻辑也能够失常应用;

微信开放平台主体迁徙

具体流程本文不细讲,可查看官网提供的文档:

🔗 微信官网提供的开放平台主体迁徙条件及流程文档

🔗 https://kf.qq.com/faq/170811F3aAjM170811zme6rq.html

❗️❗️❗️次要强调一些注意事项:

  1. 须要用新主体注册一个新的开放平台作为迁入开放平台,且须要实现认证;
  2. 开放平台仅反对 挪动 / 网站利用 迁徙;
  3. 绑定在原开放平台的 AppAppID 不会变,可持续应用;
  4. AppSecret 不会变,可持续应用;
  5. UnionID 会变,须要提前做好相干数据映射;
  6. OpenID 不会变,可持续应用;

能够看出,小程序 公众号 的迁徙,都没有波及 UnionID 的变更,然而 开放平台 的迁徙,就波及到 UnionID 的变更了,UnionID 作为多平台关联的惟一标识,如何解决至关重要,因为微信官网并没有提供具体 api 来做数据映射,所以咱们开发者只能自行处理了,以下提供一个比拟好的计划来映射新老 UnionID

  1. 迁徙实现后,咱们之前的微信受权登录接口必定是要做相应的改变;
  2. 用户在 App 端 或者 小程序端 应用微信受权登录时,咱们能够拿到 OpenID(没变,老的)和 UnionID(变了,新的);
  3. 首先用 UnionID 去用户信息表里查找,如果匹配不到用户数据,那就阐明他有可能是新注册用户,也有可能是没有做过 老 UnionID 映射 新 UnionID 的老用户;
  4. 此时不能辨别进去这两者,所以咱们还须要用 OpenID 来判断,如果通过 OpenID 在用户信息表里能查找用户数据,就阐明他是老用户,此时咱们须要用新的 UnionID 替换掉表里老的 UnionID 即可;
  5. 如果用 OpenID 也没有在用户信息表里查找到数据,那就阐明他是个新注册用户,失常存储 OpenIDUnionID 即可;

总结

以上总结的教训根本都是我踩过的坑,堪称一本🩸💦💩,提供进去心愿能给大家带来一点帮忙,
置信能看到这里的敌人,肯定对 微信开放平台 微信公众平台 微信小程序AppIDUnionID 以及 OpenID 之间的关系有一个清晰的认知了,如果还是有疑难,欢送留言探讨~

更多精彩请关注咱们的公众号「百瓶技术」,有不定期福利呦!

退出移动版