评论

【已成功】只用云开发,如何发送公众号模板消息?

下发统一消息接口回收后,如果你只有云开发,没有服务器和域名,不妨尝试使用本文的方法来发送公众号模板消息。

下发统一消息接口回收后,如果你只有云开发,没有服务器和域名,不妨尝试使用本文的方法来发送公众号模板消息。

前提:

小程序和公众号同主体且已绑定到同一个微信开放平台账号。

思路推理:

小程序用户访问任意云函数都可以拿到小程序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  
点赞 6
收藏
评论

13 个评论

  • Mos
    Mos
    2023-09-27

    附上本文代码片段:https://gitee.com/mosmos_admin/only_cloud_send_template

    2023-09-27
    赞同 3
    回复 7
    • Mos
      Mos
      发表于小程序端
      2023-10-02

      详细步骤和注意事项见代码片段

      2023-10-02
      1
      回复
    • A.
      A.
      2023-10-11
      牛呀,虽然教程过于简单,但是看代码能用。
      2023-10-11
      回复
    • Mos
      Mos
      2023-11-13
      现在环境共享之后可以在公众号网页调试工具的云开发的环境共享中配置消息推送,支持配置关注与取消关注事件,实测在事件推送中可以获取到公众号openid和unionid,大家可以去试试。
      本文方法依旧有效,更方便服务于多个小程序。
      2023-11-13
      回复
    • 周笙
      周笙
      发表于小程序端
      03-20回复Mos

      您好,请问您后期有测试过在消息推送的云函数里来保存公众号opened

      03-20
      回复
    • Mos
      Mos
      发表于小程序端
      03-20回复周笙

      当时测试过,是可以在关注与取消关注的消息推送云函数中获取到公众号openid和unionid。

      03-20
      回复
    查看更多(2)
  • Mos
    Mos
    2023-09-25

    云函数B是使用Stable Access token普通模式获取,定时任务最好是设置每小于5分钟就执行一次,以保证token永久可用。

    2023-09-25
    赞同 1
    回复 3
    • Mos
      Mos
      2023-09-27
      云函数如何固定公网IP?
      云开发控制台-云函数-版本与配置-配置-高级配置-固定公网IP。
      2023-09-27
      1
      回复
    • Mos
      Mos
      2023-09-27
      本文方法对用户操作的侵入性最小,静默获取unionid,用户无感知。
      2023-09-27
      回复
    • 小白17709205217
      小白17709205217
      2023-11-14
      把环境共享给公众号
      2023-11-14
      回复
  • 27
    27
    2023-10-01

    👍👍👍👍👍

    2023-10-01
    赞同 1
    回复
  • Ray
    Ray
    04-24

    好用!!! 授权页一次就过 其他消息通知自己写的

    04-24
    赞同
    回复
  • 浩鸽
    浩鸽
    03-17

    token 为什么要存起来,不每次调用的时候获取呢?

    03-17
    赞同
    回复 1
    • Mos
      Mos
      发表于小程序端
      03-17

      公众号接口有日调用次数限制,具体多少忘了,你可以去查一查呢

      03-17
      回复
  • 小白17709205217
    小白17709205217
    2023-11-13

    此处并不需要通过静态网站的方式静默获取用户的openid

    只需要在用户关注公众号时,使用消息推送即可获取用户的公众号openid以及unionid

    2023-11-13
    赞同
    回复 6
    查看更多(1)
  • 北溟击水
    北溟击水
    2023-10-19

    楼主的办法简单、安全。我一个开发小白照抄成功。

    感谢楼主的分享!

    2023-10-19
    赞同
    回复
  • 北溟击水
    北溟击水
    2023-10-19

    按照楼主gitee中的代码修改,在微信开发者工具中调试,总提示:Scope参数错误或没有Scope权限。小程序WXML页面如下:

    <web-view src="https://open.weixin.qq.com/connect/oauth2/authorize?appid=xxxxxxxxxxxxxxxx&redirect_uri=https://xxxxxxxxxxxx.tcloudbaseapp.com/index.html&response_type=code&scope=snsapi_base&state=123#wechat_redirect">

    </web-view>

    设置了静态网页授权:xxxxxxxxxxxx.tcloudbaseapp.com

    已在公众号白名单中增加了IP地址

    已在公众号和小程序的业务域名中增加了上述网址

    求大神指导下问题出在哪了?

    谢谢!

    2023-10-19
    赞同
    回复 7
    • 北溟击水
      北溟击水
      2023-10-19
      公众号与小程序者是认证过的,且通过开放社区关联
      2023-10-19
      回复
    • Mos
      Mos
      2023-10-19
      web-view的src直接放授权页面D的链接,你的应该是这个吧:https://xxxxxxxxxxxx.tcloudbaseapp.com/index.html
      2023-10-19
      回复
    • 北溟击水
      北溟击水
      2023-10-19回复Mos
      这种方式也试过了,界面一直转圈圈
      2023-10-19
      回复
    • 北溟击水
      北溟击水
      2023-10-19回复Mos
      http://也试过了,<返回小程序>的按钮也无反应。求大神指导
      2023-10-19
      回复
    • Mos
      Mos
      发表于小程序端
      2023-10-19回复北溟击水

      我也不方便帮你,不在办公室,只能告诉你此文方法可行,需要自己研究下。不过你环境共享了吗?

      2023-10-19
      回复
    查看更多(2)
  • 北溟击水
    北溟击水
    2023-10-19

    请问下cloud-1.4.0.js在哪里下载啊?谢谢!

    2023-10-19
    赞同
    回复 2
    • 北溟击水
      北溟击水
      2023-10-19
      从楼主gitee下载的,不知是否?
      2023-10-19
      回复
    • Mos
      Mos
      2023-10-19
      一楼gitee上的示例代码上有cloud-1.4.0.js
      2023-10-19
      回复
  • Matt
    Matt
    2023-10-14

    你好老师,公众号和小程序需要配置业务域名吗?

    域名是否就是静态内容里的URL,就像这样,我没有配置域名,webview中显示redirect_uri错误

    2023-10-14
    赞同
    回复

正在加载...

登录 后发表内容