本文代码片段:only_cloud_send_template: 小程序只用云开发发送公众号模板消息
小程序下发统一消息接口回收后,如果你只有云开发,没有服务器和域名,不妨尝试使用本文的方法来发送公众号模板消息。
前提:
小程序和公众号同主体且已绑定到同一个微信开放平台账号。
思路推理:
小程序用户访问任意云函数都可以拿到小程序openid和unionid,提前将它们保存到云数据库用户集合中。
发送模板消息:
使用云函数A发送模板消息,需要调用公众号发送模板消息的接口,调用接口需要用到公众号的access_token。
获取和保存access_token:
使用云函数B获取access_token,推荐使用Stable Access token接口获取,减少出错率,云函数B可固定IP。因接口有日调用限制且access_token默认2小时过期,获取到access_token之后需要保存到云数据库中。为防止access_token过期,基于stableAccessToken的特性,推荐云函数B设置定时触发,每隔4分钟执行一次去重新获取access_token保存到云数据库中。
使用最新access_token:
每次发模板消息时从云数据库查询最新的access_token记录,发送模板消息需要用到公众号的openid。
获取公众号openid:
将小程序的云环境共享给公众号,小程序可使用云函数C来获取公众号的openid和unionid。如何操作呢?
1、使用云开发静态网站制作一个授权页面D,在该页面中访问云函数C,使用静默授权方式访问在云函数C即可获取到访问用户的公众号openid和unionid。
2、小程序使用webview来访问页面D,授权成功后在页面显示公众号的二维码,提示用户关注公众号获取通知功能。
将小程序和公众号用户关联:
通过上述引导用户获取到的公众号unionid来查询云数据库中的用户信息,保存公众号的openid到用户信息中。
经历以上安排之后,小程序云数据库的用户集合中,用户信息已经包含了小程序openid、unionid、公众号openid,到发消息的时机就可以发了。
首发来源:微信开发社区