注意:本文讲得更多是实现思路及原理。(PS:更类似于日志,多是写给自己看的,防止忘记)
需求:
最近项目上有个需求,需要用微信公众号通知用户消息,并且能够跟小程序关联起来,即用户在微信收到消息并点击消息后能够跳转到对应小程序的指定页面去,如下图
基本知识介绍
openID:为了识别用户,每个用户针对每个公众号或小程序等应用会产生一个安全的openID,公众号或应用可将此ID进行存储,便于用户下次登录时辨识其身份,或将其与用户在第三方应用中的原有账号进行绑定
总体思路:
首先用户在小程序里登录,然后系统获取到该用户在小程序的openid,最后调用微信的统一消息服务接口,根据小程序的openid在公众号给对应用户发消息通知。具体步骤如下
- 首先在小程序的登录页面,前端调用微信接口,获取当前用户的code
- 当用户操作登录时,后端追加逻辑:先获取小程序的access_token,然后根据code再调用获取openid的接口,最后获取到openid,存储进数据库
注意:这里获取access_token,必须是小程序的appid和appsecret,不能用公众号的appid和appsecret,不然后面调用微信通知消息接口会报appid未授权错误
问题:上面步骤获得的是用户在小程序的openid,而我们要用公众号通知到用户,需要用户在公众号的openid,如何处理?
答:可以使用 微信提供的 统一消息服务 解决
最后注意
- 公众号记得跟小程序绑定在一起
- 记得给公众号开通认证
- 注意url必须填值,就算你要跳转的是小程序,但还是得给url随意赋一个值