当前位置: 首页 > news >正文

河北住建局与建设厅网站/合肥网站外包

河北住建局与建设厅网站,合肥网站外包,同ip下网站,模板网站制作公司目录前言公众号申请配置服务器信息编写服务端代码导包加密代码提交设置自动回复信息获取开发token结尾前言 最近想玩一玩微信的开发,就想着从公众号与小程序入手,租了个服务器,本文主要介绍如何使用nodejs开发公众号,包括字典码排…

目录

  • 前言
  • 公众号申请
  • 配置服务器信息
  • 编写服务端代码
    • 导包
    • 加密代码
  • 提交
  • 设置自动回复信息
  • 获取开发token
  • 结尾

前言

最近想玩一玩微信的开发,就想着从公众号与小程序入手,租了个服务器,本文主要介绍如何使用nodejs开发公众号,包括字典码排序sha1加密代码服务器配置代码,与自动回复的玩法。

公众号申请

申请页面(个人只能申请订阅号):微信公众平台。

申请后可以发现已经可以在这里设置菜单和一些自动回复内容了,但是我们想要更丰富的内容互动,就得自己开发处理才行。

配置服务器信息

  1. 要想要自己开发内容,可能需要自己的服务器,云服务器租一个。
  2. 申请成功后,基础信息自己填写好,找到左侧设置与开发下的基本配置
    在这里插入图片描述
  3. url填入自己的服务器地址,只能使用80端口,当然你可以用nginx通过请求名转发到其他端口去,/gzh是我设置的请求名,你也可以自行设置。
  4. token也设置为自己想要的,这个在请求加密验证时需要用到。
  5. 下面的那个加密码随机生成就行。
    在这里插入图片描述

编写服务端代码

导包

  1. 创建好nodejs项目,把我们需要的几个包先安装好。
npm i express sha1 xml2js -S

加密代码

  1. /gzh是我设置的请求名,你也可以自行设置。
  2. 编写get请求作为验证加密请求。
  3. token与在配置服务器信息时填写的保持一致。
  4. nonce, timestamp, token字典排序然后合成字符串再用sha1加密,与signature对比,一样则返回echostr即可。
  5. 写完启动该js服务。
import express from 'express'
const app = new express()
app.use(express.json())
import sha1 from 'sha1'// /gzh是我设置的请求名,你也可以自行设置
app.get('/gzh', (req, res) => {res.set('Access-Control-Allow-Origin', '*')const { echostr = '', timestamp = '', nonce = '', signature } = req.queryconsole.log(req.query, req.body)const token = '你设置的token'const sortStr = [nonce, timestamp, token].sort().join('')const sha1Str = sha1(sortStr)if (sha1Str === signature) {res.send(echostr)} else {console.log('error')}
})app.listen(80, () => {console.log('服务器启动')
})

提交

  1. 启动服务完,去配置页面提交,成功则可以启用了。
    在这里插入图片描述

设置自动回复信息

  1. 完成了上面的步骤之后,所有公众号的配置都要手动进行了。
  2. 比如给用户消息的自动回复,用户发送消息时会自动调用配置好的服务器post请求,发送规定的xml内容,详见微信官方文档-接收普通消息,我们在原来的编写的nodejs上加上接收该请求的内容。
  3. xml2js用来格式化传来的xml数据,变成我们比较好使用的数据。
  4. 我创建一个sendMsg方法用来定义返回信息模板,因为这xml太冗长了。
  5. 通过MsgType判断用户发来的什么类型信息,这里text就是普通的字符串消息,然后我们可以利用判断Content来决定我们返回的内容,比如当用户发来hello时回复world。注意这些值其实返回的是包含一个字符串的数组,因此我用的是==号,如果你想使用===可能得需要用MsgType[0]Content[0]来比较。
  6. 注意,第三方开发公众号回复理论只能被动回复一条,要想回复多条只能被动回复一条之后额外调用客服消息接口,虽然很蠢但是只能这样。
import xml2js from 'xml2js'
const xmlParse = xml2js.parseStringconst sendMsg = (xml, msg) => {const { ToUserName, FromUserName } = xmlreturn `<xml><ToUserName><![CDATA[${FromUserName}]]></ToUserName><FromUserName><![CDATA[${ToUserName}]]></FromUserName><CreateTime>${new Date().getTime()}</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[${msg}]]></Content></xml>`
}app.post('/gzh', (req, res) => {let data = ''req.on('data', (chunk) => {data += chunk})req.on('end', () => {xmlParse(data, (err, { xml }) => {const { ToUserName, FromUserName, CreateTime, MsgType, Content, MsgId } =xmlif (MsgType == 'text') {if (Content == 'hello') {const responseMSg = 'world'res.send(sendMsg(xml, responseMSg))}} })})
})

请添加图片描述

获取开发token

  1. 我们还需要很多可以定义小程序内容的接口,访问这些接口都需要access_token
  2. 首先我们需要到公众号的基本配置界面,公众号开发信息,获取AppSecret,这里还有AppID信息。
  3. 然后访问以下接口。

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=你的AppID&secret=你的AppSecret

  1. 你会发现访问出错,没关系,会返回一个json,里面会有你的ip信息。
  2. 把你的ip加进公众号开发信息的白名单再访问一次,就成功获得access_token

结尾

本来想多写点内容,结果发现个人公众号无法认证,连自定义菜单都不能用,就到这叭,将来有机会补上。

http://www.lbrq.cn/news/964405.html

相关文章:

  • 成都公司核名的网站/站长工具seo综合查询问题
  • 广告宣传图片制作app/郑州网站优化哪家好
  • 西安手机网站制作/日本比分预测最新分析
  • 外国域名注册网站/营业推广的方式有哪些
  • 做网站的费用是多少/网络新闻发布平台
  • 网站关键词怎么做排名靠前/站长工具域名查询ip
  • 哪个网站卖做阳具好点/关键词查网站
  • 朝鲜活埋新冠病人是真的吗/北京中文seo
  • 多个网站备案/seo引擎搜索网址
  • 手机网站开发环境/什么平台可以免费推广产品
  • sync wordpress/优化网站排名解析推广
  • 贵州营销型网站/信息流推广方式
  • 青岛做网站好的公司/水果网络营销推广方案
  • wap源码之家/seo刷关键词排名优化
  • 黄埔做网站/上海关键词优化公司哪家好
  • 梅林 做服务器 网站/网站自动提交收录
  • 怎么做网站内部搜索功能/班级优化大师手机版下载
  • 公司建网站多少钱/指数搜索
  • 服装公司网站建设方案/软件开发平台
  • 怎么样学做网站/百度指数有什么参考意义
  • 泰州做网站公司/排名优化服务
  • 免费营销型网站模版/百度seo排名软
  • 万州论坛网站建设/app拉新推广接单平台
  • 安装wordpress没有框架/seo的内容主要有哪些方面
  • wordpress真的好用吗/北京百度seo
  • 怎么在网站里做宣传/合肥瑶海区房价
  • 闵行广州网站建设公司/临沂seo建站
  • 广州市企业网站建设平台/sem竞价推广托管代运营公司
  • 长春火车站照片/百度指数免费添加
  • 用买的服务器 做网站/宁德seo培训
  • Unity 堆栈分析实战指南 C#
  • 前端下载文件并按GBK编码解析内容
  • GraphQL的N+1问题如何被DataLoader巧妙化解?
  • 学习设计模式《十八》——备忘录模式
  • Redis学习系列之—— JDHotKey 热点缓存探测系统
  • 手撕Spring底层系列之:后置处理器“PostProcessor”