微信绑定 & 关注 (web 实现)

750 阅读4分钟

1 背景

在依赖微信生态的 H5 应用中,使用推送提醒的运营功能,需要用户绑定微信和关注公众号才得以支撑。

因此业务方会期待,上述场景的绑定微信功能需要同时满足:业务账号绑定微信号微信账号关注公众号

该文档目的是:探索微信绑定和关注的不同方案,寻找较优的实现。

2 方案

注:未绑定 = 未绑定微信账号 || 未关注公众号

2.1 方案分析

方案1,先关注后绑定。借助公众号的提醒能力,来引导用户绑定微信账号

核心实现:

功能流程:

image.png

方案2,先绑定后关注。绑定和关注环节解耦;借助微信一次性订阅消息的能力,引导用户关注

核心实现:

  • 绑定:直接在 node 层调用 sso 服务的接口进行绑定
  • 关注:对未关注公众号的用户,发送一次性订阅消息,引导关注

功能流程:

image.png

状态与操作步骤情况对比

状态方案1方案2
未绑定&未关注1.扫码识别,关注
2.查看公众号消息
3.访问绑定链接,登录绑定
1.点击按钮绑定
2.用户授权接收一次性订阅消息
3.查看消息,并关注
未绑定&已关注1.扫码识别
2.查看公众号消息
3.访问绑定链接,登录绑定
1.点击按钮绑定
已绑定&未关注1.扫码识别,关注
2.查看公众号消息
3.访问绑定链接,登录绑定
1.用户授权接收一次性订阅消息
2.查看消息,并关注

方案对比

方案优点缺点
方案11.依赖的微信能力适用范围广,早期已支持;该方案在业务的前期落地的可行性高
2.有效确定用户关注公众号的行为。关注环节先行,然后执行后续绑定
1.绑定和关注环节耦合。每种状态都需要用户经历完整的绑定流程
2.sso 需要业务通用,缺失鉴权登录状态,用户每次都需要输入账号/验证码完成绑定
3.完成绑定后,重定向页面只能配置一个,对业务扩展不友好(注:生成的二维码是唯一的)
方案21.绑定和关注环节解耦。不同状态下,用户经历的流程不同,避免完整流程的冗余步骤,降低用户的体验压力
2.绑定环节在业务的 node 层实现。结合重定向的使用,实现绑定完成后回到业务页面,保证业务的闭环;未绑定&已关注的场景,可以实现一键绑定的效果
3.绑定前鉴权,无需重复登录
1.一次性订阅消息的能力,微信支持较后,每天有次数调用限制(10000000)
2.关注环节置后,无法确保用户关注公众号的状态

为了满足更好的用户体验,选用方案2 实现微信绑定流程。关于方案2 的缺点:

  1. 一次性订阅消息的能力,微信支持比较好,没有兼容问题;api 调用次数当前完全足够业务场景的使用。可以忽略
  2. 关注环节无法保障时,没关注的状态会显示在绑定流程的提示中,对用户有更强的引导作用

2.2 方案实现

绑定和关注环节的时序图如下所示:

image.png

定义场景值实现重定向时,同步 node 服务的处理结果到客户端。scene 的值及说明如下表:

scene 值说明
10001绑定成功
10002绑定失败,客户端 toast 提示
20001一次性订阅消息-关注消息发送成功(弹框引导用户关注)
20002一次性订阅消息发送失败,客户端 toast 提示
20003用户取消授权接收一次性订阅消息

2.3 实现效果对比

状态方案1方案2
未绑定&未关注A-未绑定&未关注.gifB-未绑定&未关注.gif
未绑定&已关注A-未绑定&已关注.gifB-未绑定&已关注.gif
已绑定&未关注效果与第一种状态相同B-已绑定&未关注.gif

通过上述的效果比对,方案2 体验相对友好:

  1. 绑定流程的环节区分明显,给用户不同的感知效果
  2. 冗余环节减少,可以实现一键绑定的场景,带来较好的用户体验

3 参考文档