微信小程序关联公众号(服务号)推送通知消息
2021/7/14 20:08:20
本文主要是介绍微信小程序关联公众号(服务号)推送通知消息,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、背景
最近开发的一个小程序项目需要通过服务号来推送通知。但是在最开始开发小程序的时候并没有考虑到这个功能。
我在做小程序与服务号用户关联的过程中也是踩了无数坑,所以我会在这篇文章中给出自己摸索出的解决方案。
二、准备条件
预备知识:
小程序openid:小程序用户的唯一id
公众号openid:公众号用户的唯一id
unionid:同一用户,对同一个微信开放平台下的不同应用,unionid是相同的
准备:
1.将小程序与公众号绑定(绑定后才可获取unionid),官方文档:小程序与公众号绑定获取unionid
2.接入微信公众平台开发,也就是给服务号配置一下开发者服务器。当有用户关注/取消服务号时,微信服务器会推送关注/取消的事件给我们的服务器。官方文档:接入微信公众平台开发
3.获取公众号用户列表,即所有用户的公众号openid。官方文档:获取公众号用户列表
4.通过公众号openid获取用户的unionid。官方文档:通过公众号openid获取unionid
5.推送服务号消息。官方文档:公众号发送模版消息
注意:
1.在上述的一些接口中,需要获取access_token。小程序和公众号的access_token是不同的,需要用各自的appid和secret去获取。
2.access_token每天只能获取200次,有效期是7200秒。所以应该把它加入缓存,而不是每次都去获取新的access_token。
三、开始开发
将小程序用户与公众号用户关联:
小程序用户openid→unionid←公众号用户openid
要想将小程序与公众号用户关联,第一件事就是获取用户的unionid。
我们可以在两种情况下获取用户的unionid:
一、如果用户已经关注了公众号,那么在用户登录的时候,就可以获取到unionid
二、如果用户没有关注公众号,那么得让前端调用wx.getUserInfo,把加密数据给后端解密拿到unionid。
解密需要session_key,而session_key又有有效期,得注意它过期的情况。
当用户关注公众号时,微信会推送事件给我们(本文准备条件的第2条)。
通过关注事件,我们可以拿到用户的公众号openid,再获取unionid(本文准备条件的第4条)。拿到unionid后,去数据库查询这个unionid的用户,并把公众号openid保存。
但是,还有两个情况没有考虑到:
一、在我们开发之前,已经关注了公众号的用户没有去关联
解决方案:
获取微信公众号的用户列表,再依次获取用户unionid(本文准备条件的第3、4条)。注意,此操作非常耗时。
二、用户先关注了公众号,但是从来没用过小程序(数据库里没有unionid,导致无法关联)
解决方案:
新建一张表,把这个公众号用户先记录下来。当小程序用户登录时,先检查一遍这张表尝试关联。
至此,小程序用户与公众号用户就已经完成了关联。
发送模版消息:
这个就很简单了,照着官方文档(本文准备条件的第5条)做就行了。
需要注意的是,参数别写错了,我就是把miniprogram放到data里面去了,搞的不能跳转小程序,害得我找了半天问题T T
最后附上发送模版消息的python代码:
def send_oa_msg(oa_openid, template_id, jump_param, param): """ 发送模版消息 """ oa_token = get_oa_access_token() url = 'https://api.weixin.qq.com/cgi-bin/message/template/send?access_token={oa_token}'.format(oa_token=oa_token) post_data = { "touser": oa_openid, "template_id": template_id, "miniprogram": jump_param, "data": param } res = requests.post(url, json=post_data) result = res.json() if result['errcode'] == 0: return True else: return False
原文地址:https://blog.csdn.net/qq_39687901/article/details/85243514
这篇关于微信小程序关联公众号(服务号)推送通知消息的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-302024年最新版云开发cms开通步骤,开始开发微信小程序前的准备工作,认真看完奥!
- 2024-03-30微信小程序的网络设置,及网络请求:wx.request(OBJECT)
- 2024-01-22基于taro搭建小程序多项目框架
- 2024-01-13小程序开发:在插件市场寻找步骤条组件并二开
- 2024-01-05钉钉小程序生态—企业机器人加互动卡片,改善用户体验的开始!
- 2023-12-29【UniApp】-uni-app-打包成小程序
- 2023-12-26性能翻倍!京东亿级体量小程序优化实践
- 2023-12-25小程序优化:第三方SDK过大解决方案
- 2023-11-26微信小程序文件预览和下载-文件系统
- 2023-11-2652天学习微信小程序计划No.2:注册小程序账号&安装开发者工具