脱离微信开放平台绑定公众号个数问题

来源:互联网 发布:java设计模式是什么 编辑:程序博客网 时间:2024/04/30 13:46

背景

微信公众号数量太多,无法关联用户在各个公众号的身份

用户唯一ID 概念 与 实现原理

概念

unionid:被绑定到开发平台的公众号都能获取对应的unionid。
openid:各个公众号的 openid 都不一样。
简答可以理解为,unionid 为开放平台的用户唯一ID,openid 为公众号的用户唯一ID。

原理

剖析:

把开放平台也当成一个公众号,用户访问公众号就会被生成一个唯一ID,unionid;
公众号 A, 用户访问公众号A则会生成一个A 的唯一表示, openid;
unionid 与 openid 都为用户的唯一标识只是区分在不同的公众号;
公众号A绑入开放平台时,这时就会建立两个 标识之间的关系,unionid->openidA, 公众号B unionid->openidB。

总结:

把用户不同的唯一标识openid与用户的其中一个唯一标识openid绑定,或者创建一个新的唯一标识unionid同时绑定其他不同的唯一标识openid

实现

准备:两个公众号,一个作为授权并产生 unionid的公众号A,一个为业务公众号B。

流程:
1、用户B公众号;
2、授权得到 B 的b_openid;
3、带着b_openid 到公众号A授权;
4、A 检查是否存在 a_openid 绑定的 unionid,存在则添加一条 b_openid 绑定的记录,不存在则生成一个 unionid 同时绑上 A 和 B,就这样建立了 A 和 B 的关系。

实现:
1、换取 B 公众号的 code,重定向至 redirect_url;
2、在 redirect_url 中请求获取 B公众号的 openid,判断 b_openid 有没有绑定 unionid,无则继续下面步骤;
3、得到b_openid 并拼接 a_redirect_url 把 b_openid 和最后再A授权完的重定向地址url,获取 A 公众号的code;
4、在 a_redirect_url 中获取A 的 a_openid,检查 a_openid是否已经绑定了unionid,没有则生成unionid 并绑定A;
5、获取 a_openid 对应的 unionid,并绑定 b_openid 与 unionid;
6、重定向至最终地址 url。

阅读全文
0 0