微信公众号与小程序数据互通

  背景

  最近作了一个有意思的功能《官网内容订阅》,用户在官网扫码后能够订阅官网栏目,订阅栏目后发送模版消息提醒用户订阅成功,模版消息关联了小程序,而后作了一个小程序来管理用户订阅的栏目,小程序提供订阅和新闻列表阅读功能。html

  实现技术调研分析

  经过背景描述咱们知道须要实现两块登陆:一、官网扫码二维码登陆;二、用户直接进小程序实现登陆。要实现两块登陆且要求用户从任意一个入口登陆都须要肯定为同一个用户,因此须要打通公众号与小程序的用户数据。幸运的是微信公众平台提供了unionid机制:前端

  若是开发者拥有多个移动应用、网站应用、和公众账号(包括小程序),可经过unionid来区分用户的惟一性,由于只要是同一个微信开放平台账号下的移动应用、网站应用和公众账号(包括小程序),用户的unionid是惟一的。换句话说,同一用户,对同一个微信开放平台下的不一样应用,unionid是相同的。 小程序

  所以,第一步须要申请微信开放平台的开发者资质,成为开发者资质以后,能够在微信开放平台绑定须要打通数据的公众号和小程序,让他们拥有相同的unionid,那么接下来的工做就是实现扫码登陆与小程序登陆后数据互通。api

  扫码登陆实现

  用户扫码登陆状态时序图,用户在浏览游戏官网时发现本身喜欢的栏目,点击点阅栏目时,浏览器将请求微管家服务器获取二维码,同时轮询服务器用户的扫码状态,第三方服务器经过前端给的网站域名查询对应的公众号信息,去微信后台请求场景值二维码,并返回给浏览器, 浏览器展现给用户二维码,用户扫码二维码后,服务器会获取用户的我的信息,并将用户信息和扫码状态告知浏览器(浏览器一直在轮询用户扫码状态),同时种下浏览器cookie,此时至关面用户已经用微信登陆且获取微信昵称和头像信息,用户能够去订阅其余栏目。具体流程请参考下图。须要注意的时候用户扫码登陆以后,要使用用户的unionid做为用户的惟一标识,方便下一步关联的小程序登陆。浏览器

 

  小程序登陆实现

  小程序登陆请查考小程序官网文档,须要注意两个点:一、维护用户的登陆状态;二、用户赞成登陆受权后须要获取用户个加密我的信息(unionid)。第一步的用户登陆状态维护时序图以下,第二步很是重要,在用户受权同时请求第三方服务器来进行登陆获取session时,须要将用户的encryptedData数据数据传回第三方服务器,解密出用户unionid,经过服务器配置的小程序与公众号关联关系,同步用户数据。服务器

  总结

  经过上面两步登陆设计开发便可打通该功能的两种用户数据,而后能够根据用户订阅扫码状况发送模版消息直接打开小程序,用户在pc浏览器页面所订阅的栏目与小程序的订阅数据一致。  这里面的关键点就是用户unionid机制,经过该机制能够打通多个公众号、小程序之间的用户数据,上面的案例只是一个小小的应用场景,还有更多的想象空间,结合场景值二维码和模版消息的应用,收集用户信息与用户行文,后期能够考虑对用户提供精准的推送服务。微信

相关文章
相关标签/搜索