收藏
回答

公众号接口配置验证token失败?

服务器能收到消息。 提示hashcode 和 signature不想等。是加密算法的问题么?

服务器信息:

接口信息:

程序:

import hashlib
import web
class Handle(object):
    def GET(self):
        try:
            data = web.input()
            if len(data) == 0:
                return "hello, this is handle view"
            signature = data.signature
            timestamp = data.timestamp
            nonce = data.nonce
            echostr = data.echostr
            print("signature ",signature)
            print("timestamp ",timestamp)
            print("nonce ",nonce)
            print("echostr ",echostr)
            token = "dong" 
            list = [token, timestamp, nonce]
            list.sort()
            sha1 = hashlib.sha1()
            map(sha1.update, list)
            hashcode = sha1.hexdigest()
            #print("hanle/GET func:hashcode,signature: "%(hashcode,signature))
            #print "handle/GET func: hashcode, signature: ", hashcode, signature
            if hashcode == signature:
                return echostr
            else:
                print("not equal,hashcode=%s,signature=%s"%(hashcode,signature))
                return ""
        except Exception as e:
            print("exception current:",e)
            return ""


------------------------------------------------------------------------------------------------

已经暂时解决:

首先,我将域名直接换成了ip地址

此时,还是不能验证通过,服务器上依旧提示,hashcode和signature不相等

然后,我强制返回echostr

就配置成功了。

如果不将域名改成ip地址,直接返回echostr也是不能成功

域名状态在审核中,不知道这个有什么影响?

最后一次编辑于  2020-08-23
回答关注问题邀请回答
收藏

2 个回答

  • Mr.Zhao
    Mr.Zhao
    2020-08-23

    2020-08-23
    有用
    回复 4
    • Aitlw
      Aitlw
      2020-08-23
      您这个比较的结果是相等的。
      2020-08-23
      回复
    • Aitlw
      Aitlw
      2020-08-23
      可是,我都直接强制返回echostr了,还是失败。这个可能是什么原因?
      2020-08-23
      回复
    • Mr.Zhao
      Mr.Zhao
      2020-08-23回复Aitlw
      难猜
      2020-08-23
      回复
    • Aitlw
      Aitlw
      2020-08-23回复Mr.Zhao
      暂时解决了,将域名改成ip地址了。
      2020-08-23
      回复
  • Aitlw
    Aitlw
    2020-08-23

    已经尝试强制返回echostr,还是验证失败

    2020-08-23
    有用
    回复 3
    • cbp
      cbp
      2021-01-16
      是map(sha1.update, list)的问题,将这一行代码更改成以下代码就可以了:
      sha1.update(list[0].encode('utf-8'))
      sha1.update(list[1].encode('utf-8'))
      sha1.update(list[2].encode('utf-8'))
      2021-01-16
      2
      回复
    • Kai
      Kai
      2021-06-21回复cbp
      谢谢大佬,100昏100昏
      2021-06-21
      回复
    • 周华
      周华
      2022-01-07回复cbp
      谢谢大佬
      2022-01-07
      回复
登录 后发表内容
问题标签