- 公众号模板消息接口,公众号和小程序是同一主体,但发送公众号模板消息提示openid不可用?
[图片]
2023-09-20 - 「小程序下发统一消息接口」收回后,如何适配?
「小程序下发统一消息接口」收回后,如何适配? 前言 目前「小程序下发统一消息接口」已经收回,开发者无法通过该接口下发公众号模板消息,如有消息推送需要,可使用「公众号模板消息」接口,具体可参考公告:小程序与公众号下发统一消息接口调整通知。 来看下两个接口区别 「小程序下发统一消息接口」与「公众号模板消息接口」区别如下: 小程序下发统一消息接口(已收回) 公众号模板消息接口 接口请求地址 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[代码] 也就是说,现在需要下发公众号模板消息只能使用「公众号模板消息接口」: 需要使用公众号[代码]access_token[代码]调用该接口。 需要使用公众号[代码]openid[代码]下发公众号模板消息。 那应该如何适配呢? 一、如果你有公众号[代码]openid[代码] 按照「公众号模板消息接口」文档适配,使用公众号的[代码]openid[代码]即可。 注意:更换接口后,请求包json格式也要根据文档进行修改。 二、如果你只有小程序[代码]openid[代码] ,没有公众号[代码]openid[代码] 我想到了以下几种方式,可以获取用户公众号[代码]openid[代码]。 (一)通过[代码]unionid[代码]区分同一用户 小程序与公众号绑定在同一开放平台下: 小程序内可通过「[代码]wx.login[代码]」和「[代码]code2Session[代码]」接口获取到用户的[代码]unionid[代码]和[代码]openid[代码],保存到数据库。 公众号可以调用「获取已关注用户列表接口」拿到所有已关注用户的[代码]openid[代码],可调用「获取用户基本信息接口」查询[代码]unionid[代码],保存到数据库。 对于新关注公众号的用户,关注事件推送里面会有[代码]openid[代码],可调用「获取用户基本信息接口」查询[代码]unionid[代码],保存到数据库。 注:接口有每日调用次数限制。 将用户在公众号与小程序下的[代码]openid[代码]和[代码]unionid[代码]保存到数据库里面,可以参考: (1) 如果在一个表 id unionid offiaccount_openid miniprogram_openid 下发模板消息时候,可通过小程序[代码]openid[代码]查询到公众号[代码]openid[代码]。 (2)如果是分开的表 公众号用户表 id unionid openid 小程序用户表 id unionid openid 下发模板消息的时候,通过[代码]unionid[代码]去查询对应用户公众号[代码]openid[代码]。 (二)网页授权 制作一个网页授权H5页面,可以获取到用户公众号[代码]openid[代码],当[代码]scope[代码]为[代码]snsapi_userinfo[代码]时可以获取到[代码]unionid[代码](公众号绑定到微信开放平台账号才会返回)。 (三)公众号关键词回复 用户在公众号回复关键词,开发者动态下发小程序链接,链接内带有公众号[代码]openid[代码]参数,用户点击跳转到小程序,完成绑定操作。 如果大家有其他方式,欢迎补充~
2023-09-25