- 统一服务消息取消后,云开发实现不需要unionid发送模板消息。
一般统一服务消息,都是不用unionid的,该功能取消后,再想通过unionid打通两个openid,已经有点太晚了,以下是不需要unionid打通用户数据的方案: 1、在小程序上点击按钮:开通公众号消息通知; [图片] 2.1、开通方案一:生成授权链接,复制到剪贴板,在微信中打开链接,实现公众号网页授权。 弹出model:授权链接已经复制到剪贴板,请在微信聊天中打开该链接; [图片] 拼装出公众号网页授权的链接,复制到剪贴板: https://open.weixin.qq.com/connect/oauth2/authorize?appid=<公众号APPID>&redirect_uri=<云函数HTTP访问服务网址>&response_type=code&scope=SCOPE&state=<小程序openid>#wechat_redirect 说明: redirect_uri:填入小程序云开发配置的http访问服务的自定义域名链接。(此前,需要在公众号的mp后台配置网页授权域名白名单) state:填入小程序当前用户的openid 参考文档: https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html 2.2 、小程序webview中打开授权链接,实现公众号网页授权。 此方案需要配置两个域名白名单 小程序的业务域名,公众号的网页授权域名,都要配置成同一个域名。 3、小程序云函数收到公众号授权回调,传回以下信息: 如果用户同意授权,页面将跳转至 redirect_uri/?code=CODE&state=STATE。此时state即小程序的openid。 4、用code换取公众号的openid https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code 返回数据 : { "access_token":"ACCESS_TOKEN", "expires_in":7200, "refresh_token":"REFRESH_TOKEN", "openid":"OPENID", "scope":"SCOPE", "is_snapshotuser": 1, "unionid": "UNIONID" 此时,云函数中已经同时获取到小程序openid和公众号openid [图片] 5、云函数更新数据库中user表,填入公众号openid collection: user { _openid:'xxx', mp_openid:'yyy' } [图片] 6、结束。 现在可以愉快地发送公众号模板消息了。 可能有两种方法: 一、发送公众号模板消息,还需要公众号鉴权后,获取公众号token,调用公众号模板消息 https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Template_Message_Interface.html#5 二、等公众号云调用支持发送模板消息接口了:cgi-bin/message/template/send 相信英明神武的微信开发团队,不会让我们等太久吧?不会吧?
2023-10-17 - 【已成功】只用云开发,如何发送公众号模板消息?
下发统一消息接口回收后,如果你只有云开发,没有服务器和域名,不妨尝试使用本文的方法来发送公众号模板消息。 前提: 小程序和公众号同主体且已绑定到同一个微信开放平台账号。 思路推理: 小程序用户访问任意云函数都可以拿到小程序openid和unionid,提前将它们保存到云数据库用户集合中。 发送模板消息: 使用云函数A发送模板消息,需要调用公众号发送模板消息的接口,调用接口需要用到公众号的access_token。 获取和保存access_token: 使用云函数B获取access_token,推荐使用Stable Access token接口获取,减少出错率,云函数B可固定IP。因接口有日调用限制且access_token默认2小时过期,获取到access_token之后需要保存到云数据库中。为防止access_token过期,推荐云函数B设置定时触发,每隔1小时执行一次去重新获取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,到发消息的时机就可以发了。
2023-09-24