跬步 On Coding

网站账号绑定微信方案

一般面向用户的网站都会有一些通知用户的需求,传统的方式会通过email,短信等等方式,鉴于微信的流行,像拉勾会使用微信来做通知。通过微信通知就需要把网站内部的账户体系与微信关联起来,目前体验比较好的绑定方式是通过微信扫描二维码来绑定用户账号。
从用户的角度来看,扫一扫绑定,很简单的功能,但是在研究了微信开发文档后,从开发的角度来看,其实流程还是比较复杂的,所以这里整理一下实现思路。

wechat bind

从整个绑定流程来看,后台服务会分为2个部分: 1. 网站, 2. 微信公众号服务,2部分相对独立。

绑定流程

  1. 网站生成二维码
    • 已登录用户点击绑定微信
    • 网站调用微信生成带参数的二维码api
    • 在redis/db存储ticket与登录用户关系
    • 返回二维码链接地址
  2. 用户扫描二维码
  3. 微信通知公众号服务
  4. 网站绑定用户与微信
    • 通过ticket获取用户
    • 通过openid调用获取用户基本信息获取用户信息
    • 绑定微信用户信息到用户
    • 发送绑定成功时间到网站前端(使用websocket)
  5. 前端刷新页面展示已绑定信息

总结

从以上流程来看,网站与微信公众号之间通过callback api来交互,或许可以改为任务队列的方式,网站后端与前端必须要有一个websocket才能正常通知微信绑定成功,否则只能用户自己刷新页面才能看到。一个看似很简单的功能,可能需要的工作量不少,产品提供的需求可能就是一句话,开发却要耗上几天,所以很多时候还是需要多多沟通啦。

参考

https://mp.weixin.qq.com/wiki/home/index.html
http://wechat-python-sdk.com/quickstart/official/
http://www.jianshu.com/p/a51c54ddd0f3