请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

配置微信设置的时候,配置成功返回正确,但是打开这个地址运行2次返回signature均为undefined

输出内容:

配置成功后输出

sha = 63b7ad58d28ecb1a87da4de3e6be9eaa6e19f6bc
signature = 63b7ad58d28ecb1a87da4de3e6be9eaa6e19f6bc

打开浏览器地址输出

sha = 9fa71d753282f94f85eca97d45811ce60ead189f
signature = undefined
sha = 9fa71d753282f94f85eca97d45811ce60ead189f
signature = undefined


app.js 源码

app.use(
    function *(next){
            // console.log(this.query);
    
            var token = config.wechat.token;
            var signature = this.query.signature;
            var nonce = this.query.nonce;
            var timestamp = this.query.timestamp;
            var echostr = this.query.echostr;
            var str = [token, timestamp, nonce].sort().join('');
            var sha = sha1(str);
    
            console.log('str = ' + str);
            console.log('signature = ' + signature);
            
    
            if(sha === signature){
                this.body = echostr + '';
            }
            else {
                this.body = 'wrong';
            }
            
        }
)


正在回答

5回答

Scott 2017-04-04 16:20:51

代码我目测没问题,你换一个其他的代理试试,怀疑这个代理转发时候丢包

0 回复 有任何疑惑可以回复我~
  • 提问者 大丢 #1
    老师可否出个教程,介绍一下,如果有自己的域名和自己的公众号,要如何进行匹配?
    回复 有任何疑惑可以回复我~ 2017-04-06 09:38:22
  • 提问者 大丢 #2
    非常感谢!
    回复 有任何疑惑可以回复我~ 2017-04-06 09:38:25
  • Scott 回复 提问者 大丢 #3
    如果是本地的话,可以搜 域名映射 本地端口映射 许多付费免费的工具可以用,如果是想要在外网的话,需要自己的域名解析好,服务器搭建好,也就是生产环境,包括数据库什么的,这个我做好教程了,应该是下周上线,到时候可以看一下《全栈最后一公里 - Nodejs 的服务器配置与项目部署》
    回复 有任何疑惑可以回复我~ 2017-04-06 12:53:33
Scott 2017-04-08 12:37:55

恩,先换一个代理试一下,代码我目测没问题

0 回复 有任何疑惑可以回复我~
Scott 2017-04-02 22:24:37

安装 koa 的时候用老的版本


npm i koa@1.2.0 --save


然后重新跑一下试试

0 回复 有任何疑惑可以回复我~
  • 我也遇到了这个问题,unistall掉原来的koa,按照这个方法试了一下,还是不行,各个输出如下:
    this.query = 空
    this.url = http://localhost:1234/
    this.href = 空
    this.signature = undefined
    麻烦老师帮我看看什么问题,代码跟楼主的一样。
    回复 有任何疑惑可以回复我~ 2017-04-03 12:40:21
  • Scott 回复 PanameraTurboS #2
    this.signature 肯定是 undefined,用 this.query.signature 吧,另外打印 this.query 是空是挺奇怪的,你把全部代码都贴出来,我好研究下哪里可能出了问题
    回复 有任何疑惑可以回复我~ 2017-04-03 23:29:13
  • PanameraTurboS 回复 Scott #3
    老师,我的代码在下面回复,这里字数限制了,麻烦帮我看一下,谢谢。
    回复 有任何疑惑可以回复我~ 2017-04-04 11:26:38
Hero_Tan 2017-04-08 01:52:33

同学,如果是代理,我推荐用这个 https://www.ngrok.cc/

0 回复 有任何疑惑可以回复我~
PanameraTurboS 2017-04-04 11:25:58

回复 Scott:'use strict'


var Koa = require('koa');

var sha1 = require('sha1');

var config = {

    wechat: {

        appID: 'wx46394103d21ddd67',

        appSecret: 'd5f43a9f10eb6e4eca061163eab7288f',

        token: 'xiewechatproject'

    }

}


var app = new Koa();


app.use(function *(next) {

    console.log('url=' + this.url);

    console.log('href' + this.href);

    console.log(this.query);


    var token = config.wechat.token;

    var signature = this.query.signature;

    var nonce = this.query.nonce;

    var timestamp = this.query.timestamp;

    var echostr = this.query.echostr;

    var str = [token, timestamp, nonce].sort().join('');

    var sha = sha1(str);


    console.log('sha=' + sha);

    console.log('signature=' + signature);

    if (sha === signature) {

        this.body = echostr + '';

    }

    else {

        this.body = 'wrong';

    }

})


app.listen(1234)

console.log('Listening: 1234')


说明:node版本为6.9.2

系统为macOS Sierra 10.12.3

暴露到外网用的是:localtunnel。

koa版本:看了老师在另外一个问题的回复,所以新版本和旧版本都尝试过,不知道是不是localtunnel的问题,如果还是不行,打算尝试一下其他工具。


0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信