首页 > 编程语言 >微信小程序发送订阅消息

微信小程序发送订阅消息

时间:2023-02-14 15:34:46浏览次数:79  
标签:订阅 code console log 微信 用户 发送 token 模板


要给用户主动推送消息需要以下几步
1,开通订阅服务
2,选择消息模板保存模板id
3,用户同意接收消息
4,获取用户code
5,利用code和AppID和AppSecret获取openId和
access_token
6,利用openId获取session_token
7,利用access_token和openId及模板id并设置模板内容

1,开通订阅服务

前往微信公众平台>登录小程序账号>点击功能下的订阅消息>点击开通

2,选择消息模板保存模板id

如图,点击添加

微信小程序发送订阅消息_发送消息

找到想用的类型的模板 点击选用

微信小程序发送订阅消息_发送消息_02

下面可以选择关键词,并且样式就在左侧预览

微信小程序发送订阅消息_ios_03

提交后在我的模板下可以可以看到的添加的模板

微信小程序发送订阅消息_发送消息_04

这样你就有一个自己的模板了如果没有在模板仓库找到想要的模板,可以像微信申请创建一个新模板
3,向用户申请发送消息

// 在一个按钮上设置事件触发方法向用户申请发送消息权限,微信不允许自动触发
uni.requestSubscribeMessage({
tmplIds: [''],
success (res) { }
})
// 将上面申请的模板ID填进tmpllds中,例如
uni.requestSubscribeMessage({
tmplIds: ['jyBoklN_KaZnv6J0TMjnHhSwS2lm-vT3NRyn4saeO-M'],
success (res) {
console.log(res)
},
fail (err) {
console.log(err)
}
})

这样用户点击某一按钮时触发方法,会有弹窗向用户申请权限:例如

微信小程序发送订阅消息_小程序_05

上图就是填了两个模板id,最多可以填三个
然后用户点击了允许,我们就有了权限在任意时刻向用户推送消息了
4,获取用户code
如果用云开发的化没这么麻烦,不过我这是常规开发,感觉还是有点繁琐,不过也就是使用方式,继续
用户的code在用户登录时获取,当然是用户确认登录

uni.login({
provider: 'weixin',
success: function (loginRes) {
console.log(loginRes.code);// 拿到code
}
});

5,利用code和AppID和AppSecret获取openId和
access_token

uni-app的文档上说使用uni.getUserInfo(OBJECT)获取openId,但是我并没有获取到,只能获取用户的昵称和头像信息,可以通过向微信发送请求获取,正常这个工作由后端做,不过前端能搞我觉得也没毛病

发送这个请求需要的参数,appid相信不用介绍,secret小程序的密钥在微信公众平台点击开发,点击开发设置,然后小程序管理者申请小程序密钥,复制保存他,很重要

微信小程序发送订阅消息_ios_06

然后还需要之前获取的用户的code,然grant_type填authorization_code

// 下面这段链接需要添参appid,secret ,js_code
https://api.weixin.qq.com/sns/jscode2session?appid=小程序id&secret=小程序密钥&js_code=用户信息中的code&grant_type=authorization_code

然后向微信发送get请求

let url =`https://api.weixin.qq.com/sns/jscode2session?appid=xxx&secret=xxx&js_code=xxx&grant_type=authorization_code`
axios.get(url)
.then(res => {
const { openid } = res.data;
// 拿到openid
console.log(openid)
.catch((err) => console.log(err))

这样成功的回调中就有需要的openId
6,利用openId获取session_token**
向上面一样向用户发送get请求给用户发送订阅消息还有别的方式,不过我用的这种较为笨拙的方式,也是我第一次做这个功能
发送如下请求所需参数是appId和app密钥

axios.get('https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=xxx&secret=xxx')
.then(res => {
// 获取 access_token
console.log(self.userAccess_token)
····

这样获取了所有所需的条件
最后一步发送post请求向用户发送消息
给用户发送的内容采用json格式,模板的内容需要按照模板的规定来
例如:

按照类型是thing还是time等等由不同的规格填写对应的value值,详细参照
​​
https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/subscribe-message/subscribeMessage.send.html​

填写对应的内容,然后

微信小程序发送订阅消息_微信_07

ok

axios.post('https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=' + self.userAccess_token, {
"touser":用户的openid,
"template_id": "模板id",
"data": {
"thing1": {
"value": "可汉字、数字、字母或符号组合"
},
"time2": {
"value": "2020年07月28日 18:01"
},
"thing3": {
"value": "20个以内字符"
}
}}
).then(
res => {
console.log(res)
}).catch(err => console.log(err))
})
.catch(err => console.log(err))

如果哪里说的不明白可以问我,欢迎探讨

最后如果本文对你有用的话欢迎你关注我的公众号,会有各种技术栈的文章

微信小程序发送订阅消息_发送消息_08


标签:订阅,code,console,log,微信,用户,发送,token,模板
From: https://blog.51cto.com/u_15964288/6056973

相关文章

  • 一分钟实现企业微信机器人接入chatgpt
     1、准备条件注册好企业微信注册好openai,获取到aipkey加我v信,少走好多弯路2、配置服务登录企业微信后台获取到对接的相关参数配置回调地址3、存在的问题ope......
  • 微信接入ChatGPT API 我的微信就是ChatGPT AI人工智能
      目录一、登陆OpenAI官网登录你的账号,获取APIkey二、Wechat-Chatgpt项目三、开始配置服务器修改配置文件这只是一个教学视频,至于大家关心的微信会......
  • 微信小程序使用Base64加密解密
    js文件:varbase64={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode(str){//加密varoutput="";......
  • JSON化发送数据
    let msg = JSON.stringify({            'ClientName': name,            'City': City,            'ClientAddress': ad......
  • 微信小程序开发异常:Buffer() is deprecated due to security and usability issues. P
    出现异常场景:将微信开发者工具的调试器从模拟器中分离出来,就会抛出异常  解决方式:将调试器恢复到模拟器中异常解决步骤 界面=》勾选调试器 原因:未知参考至:ht......
  • node.js 发送邮件
    constnodemailer=require("nodemailer");lettransporter=null;asyncfunctioncreateMailServer(){transporter=nodemailer.createTransport({host:"......
  • 短信打开微信小程序
    方法  短信打开小程序  开发者可通过以下3种方式实现短信打开小程序:  通过URLScheme实现  通过服务端接口或在小程序管理后台生成URLSchem......
  • 只需 3 步,人人都能搭建自己的 chatgpt 微信机器人
    大家好,我是徐公,大厂6年经验,CSDN博客专家。最近,ChatGpt很火,身边的人都在讨论,会不会成为下一个风口,像前几年互联网一样,迎来井喷式的发展。徐公我最近也是在密切关注,最近......
  • 一行代码实现微信消息推送
    一行代码实现微信消息推送介绍通过调用一个简单的接口,将要推送的消息提交后,您将在微信收到推送的消息,简单快捷可以应用的场景设备上下线,量化交易,网站公告,服务器异常信息......
  • 微信多开&防撤回工具再也不用担心好友撤回消息了
    微信多开&防撤回工具再也不用担心一台电脑不能登录多个账号了微信多开&防撤回工具再也不用担心好友撤回消息了微信,大家工作中生活中用的最多的一款应用;很多公司喜欢用微......