微信公众号开发,配置完整代码,示例

在这里插入图片描述
一、server.js文件

const express = require('express')
const app = express()
const crypto = require('crypto')  //引入node内置加密模块
const randomstring = require('randomstring')  //引入第三方产生随机字符串模块,来产生nonceStr
const axios = require('axios')  //请求获取access_token对应的接口(查看文档)
const hash = require('./model/hash.js') //引入封装的hash加密模块const appId = 'wxff781f2d374c2a1a'
const appSecret ='04dd0125daf8ae53d0448513fe6428e9'const path=require('path')
const ejs = require('ejs')   //引入ejs模板引擎
app.set(path.join(__dirname,'./views'),'views')
app.set('view engine','ejs')//*********************************   token验证   ***************************/
app.get('/token',(req,res)=>{       //  http://hmx.nat300.top/tokenconsole.log(req.query)let token = 'hahaha'            //   对应的  token == 'haha'let {signature,echostr,timestamp,nonce} = req.query     // signature = timestamp + nonce + token let str = [timestamp,nonce,token].sort().join('')     //进行字典排序,组成新的字符串let hash = crypto.createHash('sha1').update(str).digest('hex')  //通过内置模块Hash加密,digest('hex')是转换成十六进制if(hash === signature){         // 按照微信平台加密规则获取的hash === 微信系统产生的signature,则token 一样,验证通过res.send(echostr)           // 验证通过,返回echostr,通知微信平台服务器配置}else{res.send('验证失败')}
})
//*********************************   JS-SDK安全域名配置   ***************************/
app.get('/wx/MP_verify_QmSer2vGh4wSH8Q3.txt',(req,res)=>{res.send('QmSer2vGh4wSH8Q3')
})
//*********************************   配置JS-SDK   ***************************/
//appId 公众号的唯一标识,timestamp 生成签名的时间戳,nonceStr 生成签名的随机串,signature签名app.get('/jssdk',(req,res)=>{let tmpDate = (new Date()).getTime().toString() //得到毫秒时间戳let timestamp = tmpDate.substring(0,tmpDate.length-3)  //转换以秒为单位的时间戳let nonceStr = randomstring.generate(16);   //第三方模块,randomstring产生随机字符串let config = {appId,timestamp,nonceStr,jsapi_ticket: '',signature: '',url: 'http://hmx.nat300.top/jssdk'  //当前调用jssdk页面的url}// console.log(config)//------ 获取access_token ---------let access_url = `https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${appId}&secret=${appSecret}`axios.get(access_url).then((result)=>{// console.log(result.data)let access_token = result.data.access_token//--------- 获取jsapi_ticket  --------let ticket_url = `https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=${access_token}&type=jsapi`return axios.get(ticket_url)}).then((result)=>{// console.log(result.data)if(result.data.errcode===0){config.jsapi_ticket = result.data.ticket//将config对象传过去,进行加密,返回加密后的signature,--------  获取signature --------config.signature= hash.createSignatue(config)  console.log(config)res.render('index',config)}else{throw new Error(result.data.errmsg)}}).catch((err)=>{//出错的话,打印err,查看错误信息console.log(err)})})app.listen(80,()=>{console.log('服务器启动')
})

二、signature加密,model文件夹下的hash,js文件

const crypto = require('crypto')  //引入node内置加密模块const hash = {createSignatue(obj){// console.log(obj)let {nonceStr,jsapi_ticket,timestamp,url} = objlet str = `jsapi_ticket=${jsapi_ticket}&noncestr=${nonceStr}&timestamp=${timestamp}&url=${url}`//进行hash加密let signature = crypto.createHash('sha1').update(str).digest('hex')return signature  }
}
module.exports=hash

三、页面渲染,引入ejs模板,views文件夹下的index.ej文件

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title><script src="https://res2.wx.qq.com/open/js/jweixin-1.4.0.js"></script>
</head>
<body>哈哈<script>wx.config({debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。appId: '<%= appId%>', // 必填,公众号的唯一标识timestamp: '<%= timestamp%>', // 必填,生成签名的时间戳nonceStr: '<%= nonceStr%>', // 必填,生成签名的随机串signature: '<%= signature%>',// 必填,签名jsApiList: [] // 必填,需要使用的JS接口列表});wx.ready(function(res){console.log(res)console.log('配置ok')});wx.error(function(res){// console.log(res)console.log('配置不正确')});</script></body>
</html>

这里购买了NATAPP域名并完成配置:http://hmx.nat300.top,开启内网穿透,NATAPP
(购买了NATAPP域名、配置操作链接:https://blog.csdn.net/qq_41287423/article/details/86547044)

在这里插入图片描述
打开开发者工具,选择微信公众号项目,输入对应的接口,如以上配置的:http://hmx.nat300.top/jssdk,进行测试
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/52746.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

零代码编程:用ChatGPT自动登陆微信公众号后台

要实现微信公众号后台自动登陆&#xff0c;可以使用ChatGPT来编写Python代码实现。 微信公众平台账号密码登陆&#xff0c;要先点击“使用账号登录”&#xff0c;源代码是&#xff1a;<a href"javascript:;" class"login__type__container__select-type"…

Java代码 微信公众号推送(代码详细)

用的是idea, 需要修改的地方在于这些地方改了 然后吧账号密码填写进去就好了 运行类是 Yi 这个类 非常简单 祝大家成功 ,不会的关注私聊 微信公众号测试注册地址:微信公众平台 (qq.com) 我用的模板是这个只有一个数据 ,当然这个可以自己添加 做出来的效果当然上面那个…

如何优雅的在微信公众号中编辑代码

这篇文章严格意义上是写给有公众号且公众号文章需要贴代码的朋友们看的。 1 公众号编辑器真难用 自从入坑公众号以来&#xff0c;被公众号的这个编辑器简直折磨死了。我发的文章基本上是少不了贴代码的&#xff0c;可是每次贴上去的代码总是被公众号的编辑器无厘头的给我过滤掉…

初访Chirper:一个禁止人类发言的人工智能社交网络,AI们居然在吵架,太6了

最近&#xff0c;在网上仅仅用ChatGPT和AI聊天已经不够刺激了&#xff0c;现在&#xff0c;AI已经有了属于自己的专属社区&#xff1a;Chirper 简而言之&#xff0c;这是一个禁止人类发帖、评论、转发的类推特网站。人类进去后只能看见&#xff1a;成千上万个AI聊天机器人在其…

ChatGPT和搜索引擎哪个更好用

目录 ChatGPT和搜索引擎的概念 ChatGPT和搜索引擎的作用 ChatGPT的作用 搜索引擎的作用 ChatGPT和搜索引擎哪个更好用 总结 ChatGPT和搜索引擎的概念 ChatGPT是一种基于对话的人工智能技术&#xff0c;而搜索引擎则是一种用于在互联网上查找和检索信息的工具。它们各自具…

产品负责人 VS 产品经理

概述 Scrum框架创造了对新角色的需求&#xff0c;其中就包括 “产品负责人” 。这不可避免额外地导致对产品负责人和产品经理角色的误解和误用&#xff0c;对团队产生不必要的压力。 角色混淆会带来噪音和摩擦&#xff0c;削弱团队对价值、质量、速度和满意度的关注。这种混乱…

从程序员到产品经理

一直以来我都觉得自己是个典型性程序员。 比如出门时候我总是穿格子衫、牛仔裤&#xff0c;戴着黑框眼镜背个双肩包&#xff1b; 比如休闲时候我是个死宅&#xff0c;喜欢玩游戏和看小说&#xff1b; 比如一直到23岁时候我依然是“妹手软”&#xff0c;没谈过恋爱。 当然可能也…

产品经理培训还好找工作吗?

本篇文章主要讲解粉丝后台留言问题&#xff1a;新人转产品&#xff0c;通过培训班还好找工作吗。 日期&#xff1a;2021年8月21日 作者&#xff1a;任聪聪 我以不同角度为大家解读&#xff0c;培训出来的产品经理是否还好找工作。 产品经理的就业行情还好吗 先来看两组数据&a…

人工智能 | ShowMeAI资讯日报 #2022.06.05

ShowMeAI日报系列全新升级&#xff01;覆盖AI人工智能 工具&框架 | 项目&代码 | 博文&分享 | 数据&资源 | 研究&论文 等方向。点击查看 历史文章列表&#xff0c;在公众号内订阅话题 #ShowMeAI资讯日报&#xff0c;可接收每日最新推送。点击 专题合辑&…

人工智能 | ShowMeAI资讯日报 #2022.06.06

ShowMeAI日报系列全新升级&#xff01;覆盖AI人工智能 工具&框架 | 项目&代码 | 博文&分享 | 数据&资源 | 研究&论文 等方向。点击查看 历史文章列表&#xff0c;在公众号内订阅话题 #ShowMeAI资讯日报&#xff0c;可接收每日最新推送。点击 专题合辑&…

人工智能 | ShowMeAI资讯日报 #2022.06.18

ShowMeAI日报系列全新升级&#xff01;覆盖AI人工智能 工具&框架 | 项目&代码 | 博文&分享 | 数据&资源 | 研究&论文 等方向。点击查看 历史文章列表&#xff0c;在公众号内订阅话题 #ShowMeAI资讯日报&#xff0c;可接收每日最新推送。点击 专题合辑&…

人工智能 | ShowMeAI资讯日报 #2022.06.20

ShowMeAI日报系列全新升级&#xff01;覆盖AI人工智能 工具&框架 | 项目&代码 | 博文&分享 | 数据&资源 | 研究&论文 等方向。点击查看 历史文章列表&#xff0c;在公众号内订阅话题 #ShowMeAI资讯日报&#xff0c;可接收每日最新推送。点击 专题合辑&…

人工智能 | ShowMeAI资讯日报 #2022.06.29

ShowMeAI日报系列全新升级&#xff01;覆盖AI人工智能 工具&框架 | 项目&代码 | 博文&分享 | 数据&资源 | 研究&论文 等方向。点击查看 历史文章列表&#xff0c;在公众号内订阅话题 #ShowMeAI资讯日报&#xff0c;可接收每日最新推送。点击 专题合辑&…

人工智能 | ShowMeAI资讯日报 #2022.06.24

ShowMeAI日报系列全新升级&#xff01;覆盖AI人工智能 工具&框架 | 项目&代码 | 博文&分享 | 数据&资源 | 研究&论文 等方向。点击查看 历史文章列表&#xff0c;在公众号内订阅话题 #ShowMeAI资讯日报&#xff0c;可接收每日最新推送。点击 专题合辑&…

人工智能 | ShowMeAI资讯日报 #2022.06.16

ShowMeAI日报系列全新升级&#xff01;覆盖AI人工智能 工具&框架 | 项目&代码 | 博文&分享 | 数据&资源 | 研究&论文 等方向。点击查看 历史文章列表&#xff0c;在公众号内订阅话题 #ShowMeAI资讯日报&#xff0c;可接收每日最新推送。点击 专题合辑&…

人工智能 | ShowMeAI资讯日报 #2022.06.30

ShowMeAI日报系列全新升级&#xff01;覆盖AI人工智能 工具&框架 | 项目&代码 | 博文&分享 | 数据&资源 | 研究&论文 等方向。点击查看 历史文章列表&#xff0c;在公众号内订阅话题 #ShowMeAI资讯日报&#xff0c;可接收每日最新推送。点击 专题合辑&…

人工智能 | ShowMeAI资讯日报 #2022.06.19

ShowMeAI日报系列全新升级&#xff01;覆盖AI人工智能 工具&框架 | 项目&代码 | 博文&分享 | 数据&资源 | 研究&论文 等方向。点击查看 历史文章列表&#xff0c;在公众号内订阅话题 #ShowMeAI资讯日报&#xff0c;可接收每日最新推送。点击 专题合辑&…

2021QS计算机专业排名发布:MIT斯坦福霸榜,清华北大进入前20

转载于 新智元 来源&#xff1a;qs topuniversities 编辑&#xff1a;yaxin 【新智元导读】2021 QS世界大学学科排名出炉了&#xff01;最新排名涉及51个学科&#xff0c;横跨5大领域。在计算机科学专业排名中&#xff0c;MIT、斯坦福、哈佛占领了世界前三席&#xff0c;中国…

最新!泰晤士2022世界大学排名发布:97所中国大陆高校上榜!

点击下方卡片&#xff0c;关注“CVer”公众号 AI/CV重磅干货&#xff0c;第一时间送达 来源&#xff1a;泰晤士高等教育 转载自&#xff1a;双一流高校 刚刚&#xff08;北京时间2021年9月2日上午7时&#xff09;&#xff0c;泰晤士高等教育发布了2022年度世界大学排名&#xf…

你的学校排第几?软科中国大学排名发布

转载于 软科 &#xff08;2021年4月26日&#xff09;高等教育评价专业机构软科今日正式发布“2021软科中国大学排名”。清华大学、北京大学、浙江大学占据主榜&#xff08;即综合性大学排名&#xff09;前三位。 2021软科中国大学排名&#xff08;主榜&#xff09; 主榜&#x…