评论

「小程序下发统一消息接口」收回后,如何适配?

「公众号模板消息接口」需要使用公众号access_token和公众号openid,如何获取公众号openid下发公众号模板消息?

「小程序下发统一消息接口」收回后,如何适配?

前言

目前「小程序下发统一消息接口」已经收回,开发者无法通过该接口下发公众号模板消息,如有消息推送需要,可使用「公众号模板消息」接口,具体可参考公告:小程序与公众号下发统一消息接口调整通知

来看下两个接口区别

小程序下发统一消息接口」与「公众号模板消息接口」区别如下:

小程序下发统一消息接口(已收回) 公众号模板消息接口
接口请求地址 POST https://api.weixin.qq.com/cgi-bin/message/wxopen/template/uniform_send?access_token=ACCESS_TOKEN POST https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN
接口调用凭证 小程序 access_token 公众号 access_token
接收者 openid 小程序 openid 或 公众号 openid 公众号 openid

也就是说,现在需要下发公众号模板消息只能使用「公众号模板消息接口」:

  1. 需要使用公众号access_token调用该接口。
  2. 需要使用公众号openid下发公众号模板消息。

那应该如何适配呢?

一、如果你有公众号openid

按照「公众号模板消息接口」文档适配,使用公众号的openid即可。

注意:更换接口后,请求包json格式也要根据文档进行修改。

二、如果你只有小程序openid ,没有公众号openid

我想到了以下几种方式,可以获取用户公众号openid

(一)通过unionid区分同一用户

小程序与公众号绑定在同一开放平台下:

  1. 小程序内可通过「wx.login」和「code2Session」接口获取到用户的unionidopenid,保存到数据库。

  2. 公众号可以调用「获取已关注用户列表接口」拿到所有已关注用户的openid,可调用「获取用户基本信息接口」查询unionid,保存到数据库。

  3. 对于新关注公众号的用户,关注事件推送里面会有openid,可调用「获取用户基本信息接口」查询unionid,保存到数据库。

注:接口有每日调用次数限制。

将用户在公众号与小程序下的openidunionid保存到数据库里面,可以参考:

(1) 如果在一个表
id unionid offiaccount_openid miniprogram_openid

下发模板消息时候,可通过小程序openid查询到公众号openid

(2)如果是分开的表

公众号用户表

id unionid openid

小程序用户表

id unionid openid

下发模板消息的时候,通过unionid去查询对应用户公众号openid

(二)网页授权

制作一个网页授权H5页面,可以获取到用户公众号openid,当scopesnsapi_userinfo时可以获取到unionid(公众号绑定到微信开放平台账号才会返回)。

(三)公众号关键词回复

用户在公众号回复关键词,开发者动态下发小程序链接,链接内带有公众号openid参数,用户点击跳转到小程序,完成绑定操作。

如果大家有其他方式,欢迎补充~

最后一次编辑于  2023-09-25  
点赞 15
收藏
评论

17 个评论

  • 会飞的猪
    会飞的猪
    2023-09-22

    哎,微信真的是没事找事,是又缺钱了吗,美其名曰 为了优化开发体验,避免多个同一功能接口对开发者造成困扰,你把这个接口回收才是最大的困扰

    2023-09-22
    赞同 11
    回复 2
    • 2020
      2020
      2023-09-27
      确实如此,坑人呢。
      2023-09-27
      1
      回复
    • No.1
      No.1
      03-21
      之前只有小程序侧需求, 公众号需求完全没有, 现在又需要折腾一圈, 美其名曰为了方便程序猿... 结果wx砍了接口,公司交了300, 自己加班1天
      03-21
      回复
  • 如虎添翼
    如虎添翼
    2023-09-25

    哎,微信真的是没事找事,是又缺钱了吗,美其名曰 为了优化开发体验,避免多个同一功能接口对开发者造成困扰,你把这个接口回收才是最大的困扰,让我发愁了好几天



    2023-09-25
    赞同 7
    回复
  • Tri
    Tri
    2023-10-06

    关注事件推送 需要开启开发者模式吗?

    2023-10-06
    赞同 2
    回复 1
    • Hlxuan.
      Hlxuan.
      2023-10-06
      需要的。
      2023-10-06
      回复
  • 牵着蜗牛去旅行
    牵着蜗牛去旅行
    2023-11-16

    小程序可以强制关注关联的公众号吗

    2023-11-16
    赞同 1
    回复 3
  • .
    .
    2023-11-02

    官方每次的操作都让人无语。美其名曰 为了优化开发体验,避免多个同一功能接口对开发者造成困扰

    2023-11-02
    赞同 1
    回复
  • 白菜
    白菜
    2023-10-10

    第一种方式实现起来会不会有些奇怪,为了一个公众号openId,先获取所有的,然后在一个一个去获取unionid,在比较

    2023-10-10
    赞同 1
    回复 1
    • .
      .
      2023-11-16
      我现在的想法是单独一张表记录unionId和公众号的openId,然后用unionId去和用户表关联起来;弄个定时任务定时往里面加数据,因为第一种方法是可以获取到最后一个openId的 就不用每次都全获取到再去处理
      2023-11-16
      回复
  • Hlxuan.
    Hlxuan.
    2023-09-25

    要注意的是:更换接口后,请求包json格式不要忘记根据文档修改。

    2023-09-25
    赞同 1
    回复
  • W.
    W.
    10-16

    使用【公众号关键词回复】的方式获取openId,试了下,不可行啊。这个具体怎么实现呢

    10-16
    赞同
    回复
  • 浮桥
    浮桥
    08-04

    如果一个小程序对应多个公众号,通过小程序openid查 unionid就会得到多个公众号的openid。那怎么才能找到想发送消息的公众号呢。

    08-04
    赞同
    回复
  • .
    .
    2023-11-07

    如果之前就没绑定开放平台,没有存储 unionid ,这种旧的用户信息 只有一个小程序的 openid 的怎么获取公众号的 openid 呢。

    2023-11-07
    赞同
    回复 1
    • 任少强丶
      任少强丶
      07-04
      我也想问这个,  用户用小程序不代表要关注你的公众号呀
      07-04
      回复

正在加载...

登录 后发表内容