使用nodejs进行微信公众号网页开发(一)验证服务器「建议收藏」

使用nodejs进行微信公众号网页开发(一)验证服务器「建议收藏」微信公众号网页开发(一)验证服务器前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言微信公众号网页开发第一步是验证服务器这一步是必不可少的。我是用的是liunx系统搭配宝塔面板,基于node.js+nginx进行开发的。一、pandas是什么?示例:pandas是基于NumPy的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):importnumpyasnpimportpandasaspdimportmatpl

大家好,又见面了,我是你们的朋友全栈君。


前言

微信公众号网页开发第一步是验证服务器这一步是必不可少的。我是用的是liunx系统搭配宝塔面板,基于node.js+nginx进行开发的。

一、服务器配置

安装liunx系统服务器进入宝塔官网;按照步骤配置服务器,开启nginx服务,因为此类教程比较全面不再过多赘述。
注意:开发公众号页面需要已经备案的域名

二、后台编写验证服务器逻辑

1.创建相关nodejs服务

每个人有每个人的方法。我是通过脚手架建立的nodejs服务,并向外映射

2.在index.js内编写代码

(1). 先安装sha加密插件

通过npm安装jssha插件,插件使用方式参考教程jssha – npm

(2). 在index.js文件内引入jssha

//引入sha1模块
const jsSHA = require('jssha');

(3).定义配置

主要是配置验证所需的一些字段(如:appID、Token等)

// 定义配置对象
const config ={ 
   
    token:'这里写token', //token需要自己定义 例如:HTML0907
    appID:'AppID', //填写开发公众号的AppID
    appsecret:'appsecret', //填写开发公众号的appsecret
    EncodingAESKey:'EncodingAESKey' //填写开发公众号的EncodingAESKey
}

(4).接受微信服务器发送的请求并处理

使用get请求获取微信服务器发来的相关信息
1.处理微信请求所带参数 signature(微信加密签名)、timestamp(时间戳)、 nonce(随机数)、echostr (随机字符串);

router.get('/',function(req,res,next){ 
   
    const { 
   token} = config; //解构赋值获取token
    var signature = req.query.signature, //微信加密签名
	    timestamp = req.query.timestamp, //时间戳
	    nonce = req.query.nonce, //随机数
	    echostr = req.query.echostr; //随机字符串
})

2.将token、timestamp、nonce三个参数进行字典序排序

var array = [token,timestamp,nonce];
array.sort();
})

3.将三个参数字符串拼接成一个字符串进行sha1加密

var tempStr = array.join(''); //拼接字符串
/** * 利用jssha进行sha1加密 * 必须使用此方式才可以进行加密否则报错不生效 */
var shaObj = new jsSHA('SHA-1', 'TEXT');
shaObj.update(tempStr);
var scyptoString=shaObj.getHash('HEX');

4.开发者获得加密后的字符串可与signature对比,标识该请求来源于微信

if(signature === scyptoString){ 
    //判断加密后的字符串是否与signature相同
	res.send(echostr);  //相同则返回随机字符串echostr
}else{ 
   
    res.send('error'); //不相同则返回错误
}

完整index.js代码

var express = require('express');
var router = express.Router();
//引入sha1模块
const jsSHA = require('jssha');

const app = express()
// 定义配置对象
const config ={ 
   
    token:'这里写token', //token需要自己定义 例如:HTML0907
    appID:'AppID', //填写开发公众号的AppID
    appsecret:'appsecret', //填写开发公众号的appsecret
    EncodingAESKey:'EncodingAESKey' //填写开发公众号的EncodingAESKey
}

router.get('/',function(req,res,next){ 
   
    const { 
   token} = config;
    	//1.处理微信请求所带参数 signature(微信加密签名)、timestamp(时间戳)、 nonce(随机数)、echostr (随机字符串);
    var signature = req.query.signature,//微信加密签名
	    timestamp = req.query.timestamp,//时间戳
	    nonce = req.query.nonce,//随机数
	    echostr = req.query.echostr;//随机字符串
	    //2.将token、timestamp、nonce三个参数进行字典序排序
	    var array = [token,timestamp,nonce];
	    array.sort();
	    //3.将三个参数字符串拼接成一个字符串进行sha1加密
	    var tempStr = array.join('');
	    var shaObj = new jsSHA('SHA-1', 'TEXT');
	    shaObj.update(tempStr);
	    var scyptoString=shaObj.getHash('HEX');
	     //4.开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
	    if(signature === scyptoString){ 
   
	        res.send(echostr);
	    }else{ 
   
	        res.send('error');
	    }
})

module.exports = router;

三、公众号配置

1.进入公众号后台页面

1.> 在最下面找到开发–>基本配置–>服务器配置–>修改配置
看见下图所示
服务器配置修改页局部
填写配置
URL为接口的地址,一般只填写链接即可 例:https://baidu.com
Token为随机字符,需要自己编写 例:HTML0907
EncodingAESKey和消息加解密方式根据自己需要填写

2.完成后点击提交

如果出现错误
1.检查自己的参数配置是否完整
2.检查服务器逻辑是否有误

总结

微信公众号验证服务器较为简单,只要逻辑不出错就没有太大问题
验证思路:
1.先编写验证逻辑:获取字符串–>进行字典序排序–>进行sha1加密–>密文与随机字符串比较返回信息
2.对微信公众号后台进行配置
以上就是验证服务器的方法了,适合使用nodejs作为后台语言的小伙伴

Java从基础进阶到高手

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/136589.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号