微信公众号与小程序数据互通
背景
最近做了一个有意思的功能《官网内容订阅》,用户在官网扫码后可以订阅官网栏目,订阅栏目后发送模版消息提醒用户订阅成功,模版消息关联了小程序,然后做了一个小程序来管理用户订阅的栏目,小程序提供订阅和新闻列表阅读功能。
实现技术调研分析
通过背景描述我们知道需要实现两块登录:
1、官网扫码二维码登录;
2、用户直接进小程序实现登录。
要实现两块登录且要求用户从任意一个入口登录都需要确定为同一个用户,所以需要打通公众号与小程序的用户数据。幸运的是微信公众平台提供了unionid机制:
如果开发者拥有多个移动应用、网站应用、和公众帐号(包括小程序),可通过unionid来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号(包括小程序),用户的unionid是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,unionid是相同的。
因此,第一步需要申请微信开放平台的开发者资质,成为开发者资质之后,可以在微信开放平台绑定需要打通数据的公众号和小程序,让他们拥有相同的unionid,那么接下来的工作就是实现扫码登录与小程序登录后数据互通。
扫码登录实现
用户扫码登录状态时序图,用户在浏览游戏官网时发现自己喜欢的栏目,
1. 用户点击点阅栏目时;
2. 浏览器将请求微管家服务器获取二维码,同时轮询服务器用户的扫码状态
3. 微管家服务器通过前端给的网站域名查询对应的公众号信息
4. 微管家服务器去微信后台请求场景值二维码
5. 微信服务器返回场景码给为浏览器
6. 浏览器展示给用户二维码
7. 浏览器一直在轮询用户扫码状态
8. 用户扫码二维码后,用户手机浏览器(通常是微信内置浏览器)发送二维码请求到服务器
9. 服务器会获取用户的个人信息,
10. 并将用户信息和扫码状态告知浏览器,同时种下浏览器cookie
此时相当面用户已经用微信登录且获取微信昵称和头像信息,用户可以去订阅其他栏目。
具体流程请参考下图。需要注意的时候用户扫码登录之后,要使用用户的unionid作为用户的唯一标识,方便下一步关联的小程序登录。
小程序登录实现
小程序登录请查考小程序官网文档,需要注意两个点:
1、维护用户的登录状态;
2、用户同意登录授权后需要获取用户个加密个人信息(unionid)。
第一步的用户登录状态维护时序图如下,第二步非常重要,在用户授权同时请求第三方服务器来进行登录获取session时,需要将用户的encryptedData数据数据传回第三方服务器,解密出用户unionid,通过服务器配置的小程序与公众号关联关系,同步用户数据。
总结
通过上面两步登录设计开发即可打通该功能的两种用户数据,然后可以根据用户订阅扫码情况发送模版消息直接打开小程序,用户在pc浏览器页面所订阅的栏目与小程序的订阅数据一致。 这里面的关键点就是用户unionid机制,通过该机制可以打通多个公众号、小程序之间的用户数据,上面的案例只是一个小小的应用场景,还有更多的想象空间,结合场景值二维码和模版消息的应用,收集用户信息与用户行文,后期可以考虑对用户提供精准的推送服务。
微信公众号与小程序数据互通相关推荐
- ngrok内网穿透工具搭建,方便微信公众号,小程序、钉钉等开发【已投入使用】
前言:微信公众号,小程序.钉钉等开发需要内网穿透工具. 1.经过不断的摸索和调试,完成ngrok内网穿透的工具的搭建,对于微信公众号,小程序.钉钉等开发提供便利性. 2.搭建环境Linux cento ...
- 【教程】微信公众号与小程序主体变更看这篇就够了
一.前言 不久后公司主体将要变更,为了公司现有的公众号以及小程序能够实现丝滑切换,花了半天时间仔细研究了一下微信主体变更的操作章程.现将其中的要点以及注意点记录整理如下,可供后续有需要做微信公众号或小 ...
- 微信公众平台发布小程序数据助手 可查看运营数据
微信公众平台发布小程序数据助手 可查看运营数据 用手机也能看小程序后台数据了 " 微信公众平台发布官方小程序「小程序数据助手」,支持相关的开发和运营人员在手机端更方便.及时地查看运营数据.& ...
- Bwsaas框架基于Thinkphp6.x开发的微信公众号,小程序,app,H5等多端打通的框架
完善bwsaas框架并开源原生小程序商业版本前端应用 新增 1插件安装升级,安装平台系统插件(type=admin_system)时可同时添加多个角色组(平台系统功能+租户系统功能),需要在group ...
- 小程序 php wecahtpay,PHP 微信公众号,小程序获取支付参数。微信支付
PHP 微信公众号,小程序获取支付参数.微信支付 发布时间:2018-09-26 11:19, 浏览次数:278 , 标签: PHP 首先下载微信官方demo放入项目中 地址:https://gith ...
- Appium 解决微信公众号、小程序切换 webview 后无法定位元素的问题
Appium 解决微信公众号.小程序切换 webview 后无法定位元素的问题 参考文章: (1)Appium 解决微信公众号.小程序切换 webview 后无法定位元素的问题 (2)https:// ...
- 微信公众号及小程序开发入门(二)
开发过程中一些对微信公众号和小程序的认识. 一.服务号 在公众号开发入门一中提到,微信公众号分为订阅号和服务号,其中服务号功能最强,只准企业申请,并且要每年交300元认证费.如果企业想拥有自己的公众号 ...
- 企业是先做网站,还是做微信公众号或小程序 ?
很多企业想开发线上业务,就开始做网站.做微信公众号.做小程序.表面看起来开发线上业务的工具,该有的都有了,结果却不是很理想.因此,有的企业就觉得网上开发客户效果不好,但还是有的企业老板希望能把线上开发 ...
- 【微信小程序控制硬件 第14篇】分享一下我在微信公众号和小程序上实现的几个颜色采集器,轻松集成到您项目实现调光。
[微信小程序控制硬件第1篇 ] 全网首发,借助 emq 消息服务器带你如何搭建微信小程序的mqtt服务器,轻松控制智能硬件! [微信小程序控制硬件第2篇 ] 开始微信小程序之旅,导入小程序Mqtt客户 ...
最新文章
- Java的IDEA最常用快捷键汇总+快速写出Main函数
- 我帮公司财务写了个“群发工资条”的Python脚本
- JavaScript初学者编程题(2)
- Struts2 Date类型转换问题
- 设计模式工作笔记-简单工厂场景与实现(针对接口编程的设计思想)
- 01-windows下 Rserve安装
- xp系统打开计算机硬盘分区,XP系统下怎么进行硬盘分区啊?
- 31.Linux/Unix 系统编程手册(上) -- 线程:线程安全和每线程存储
- 7. PHP Xhprof
- cpp存储类型说明符(storage class specifier)
- 普林斯顿微积分读本篇十二:洛必达法则
- 数字图像取证:初学者手册
- c语言字符串把小写转换大写字母,c语言将字符串中的小写字母转换成大写字母...
- html5 canvas 涂鸦画板
- orcad 连mysql_如何在OrCAD中建立电气互连
- 宝塔linux面板 伪静态,AMH主机面板伪静态规则大全,
- Vue 3 + Vite + Eslint + prettier + husky + lint-staged 搭建基础项目
- tensor如何实现转置_转置()TensorFlow中的函数
- VSCODE + 搜狗输入法,两次文字突然变成繁体?
- 2020汽车驾驶员(中级)证考试及汽车驾驶员(中级)操作证考试