基于node的微信公众平台,出现 config:invalid signature

发布于 2022-09-04 12:35:40 字数 3295 浏览 13 评论 0

错误提示:
clipboard.png

代码:


var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');

// var config = require('./config/config.json');
var index = require('./routes/index');
// var users = require('./routes/users');
// var utils = require('./routes/utils');

var app = express();

// view engine setup
// app.set('views', path.join(__dirname, 'views'));
// app.set('view engine', 'jade');

// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
// 微信签名认证
// app.use(utils.sign(config));

app.use('/', index);
// app.use('/users', users);



// catch 404 and forward to error handler
app.use(function(req, res, next) {
  var err = new Error('Not Found');
  err.status = 404;
  next(err);
});

// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});
module.exports = app;

index.js

// var express = require('express');
// var router = express.Router();

// /* GET home page. */
// router.get('/', function(req, res, next) {
//   res.use(express.static('public'))
// });

// module.exports = router;





var express = require('express');
var crypto = require('crypto');
var router = express.Router();
  
var token = "weixin"; //此处需要你自己修改!
  
/* GET home page. */
router.get('/', function(req, res, next) {
  console.log(req)

    var timestamp = req.query.timestamp;
    var nonce = req.query.nonce;
    var echostr = req.query.echostr;
    var signature = req.query.signature;
    /*  加密/校验流程如下: */
    //1. 将token、timestamp、nonce三个参数进行字典序排序
    var array = new Array(token,timestamp,nonce);
    array.sort();
    var str = array.toString().replace(/,/g,"");
  
    //2. 将三个参数字符串拼接成一个字符串进行sha1加密
    var sha1Code = crypto.createHash("sha1");
    var code = sha1Code.update(str,'utf-8').digest("hex");
  
    //3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
    if(code===signature){
        res.send(signature)
    }else{
        res.send("error");
    }
});
module.exports = router;

index.html

            debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
            appId: 'wx52c7cc07ee7f8e7a', // 必填,公众号的唯一标识
            appsecret:'d4624c36b6795d1d99dcf0547af5443d',
            timestamp: '<%= timestamp %>', // 必填,生成签名的时间戳
            nonceStr: '<%= nonceStr %>', // 必填,生成签名的随机串
            signature: '<%= signature %>',// 必填,签名,见附录1
            jsApiList: ['onMenuShareTimeline','onMenuShareAppMessage'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
        });

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文