• “微信公众号-设置-基本配置”的配置


    这个一定要吐槽一下,虽然没什么用。如果想改,早就改了。腾讯家大业大,不怎么在乎个别用户的吐槽。而且,开发者,并不是用户。写文档的兄弟勿怪,虽然我觉得你不会看到。之所以说这些,是因为,腾讯一向以完美的产品称霸天下。一个页面的文字就能挑出来这么多问题,是不是有点说不过去?

    第一,模模糊糊感觉,似乎要做微信开发,就得启用开发者模式,然后“开发”菜单下有个“基本配置”菜单,上面的一节是“公众号开发信息”,这个相对比较简单,一看就懂。

    问题在下面那一节,叫个“服务器配置(未启用)”,然后没有任何说明,有没有觉得这个说法太笼统了?什么叫服务器配置?网上大量关于这个问题的询问。其实关于这个功能的说明,藏在了那个“启用”按钮的提示里,点“启用”时,会有一个说明。腾讯应当把说明放在页面的显示位置。

    第二,这个页面没有任何能够指向帮助的链接,你得去点“修改配置”按钮,才能看到一些帮助的链接。

    同样的,网上有大量的关于那个URL是什么的提问。

    打开第一个链接“接入指南”,会跳到“微信公众平台技术文档”页的首页,前五项是一些常规性的说明,对于一个新手来讲,基本没用。重要的是第六项,“入门指引”,点击进入,是一个长长的目录,这倒无可厚非,接下来,我们会看到的一定是一个技术大牛写的文档,假设用户具有相当的技术基础,且文字相当简练,确实不是给小白看的。如下,中括号里是丢掉的字。

    公众平台的技术文档【的】目的【是】为了简明扼要的交代接口的使用,语句难免苦涩难懂,甚至对于不同的读者,有语意歧义。万事皆是入门难,对于刚入门的开发者【来】讲,更是难上加难,往往看了半天wiki,就是不懂说的什么鬼。

    第一步,首先推了一下腾讯的云服务器。

    这无可厚非,理所当然。问题是那句“学生党注意:腾讯公司为在读高校生提供了云+校园计口,1元/月即可使用腾讯云。”,其中的链接已然失效。

    第二步,搭建服务

    “以web.py网络框【架】,python,腾讯云服务器为例介绍。”

    接下来:

    “3)如果出现“socket.error: No socket could be created“错误信息,可能为80端口号被占用,可能是没有权限,请自行查询解决办法。如果遇见其他错误信息,请到web.py官方文档,学习webpy 框架3执行命令:sudo python main.py 80 。”

    后面那部分,

    应当是“学习webpy 框架

    执行命令:sudo python main.py 80”

    接下来:

    现在选择提交肯定是验证token失败,因为还需要完成代码逻辑”,这一句应当往上移,放到上面的说明中,相信不少人看完上一步以后,就尝试提交,搞半天失败以后,再往下看,发现还有这么一句,会不会牙根痒痒。

    接下来的Python代码,应当是python2版本,我改成了python3

    # -*- coding: utf-8 -*-
    # filename: handle.py
    
    import hashlib
    import web
    
    class Handle(object):
        def GET(self):
            #try:
                data = web.input()
                print(data)
                if len(data) == 0:
                    return "hello, this is handle view"
                signature = data.signature
    
                signature = signature
                print("signature:",data.signature)
    
                timestamp = data.timestamp
    
                timestamp = bytes(timestamp,'utf-8')
                print("timestamp:",data.timestamp)
                          
                nonce = data.nonce
                nonce = bytes(nonce,'utf-8')
                print("nonce:",data.nonce)
    
                echostr = data.echostr
                echostr = bytes(echostr,'utf-8')
                print("echostr:",data.nonce)
    
                token = bytes("sabre",'utf-8') #请按照公众平台官网基本配置中信息填写
                print("token:",token)
    
    
                list1 = [token, timestamp, nonce]
                list1.sort()
                print("list1:", list1)
                sha1 = hashlib.sha1()
    
                #map(sha1.update, list1)
                sha1.update(list1[0])
                sha1.update(list1[1])
                sha1.update(list1[2])
                
                hashcode = sha1.hexdigest()
                print("handle/GET func: hashcode, signature: ", hashcode, signature)
                print("hashcode:",hashcode)
                print("signatue:",signature)            
                if hashcode == signature:
                    print("相等")
    
                    return echostr
                else:
                    print("不等")
                    return ""
            #except (Exception) as Argument:
            #    return Argument

    最开始总是报“token验证失败”,我做了各种测试各种输出,最后,把map(sha1.update, list1)改成了

    sha1.update(list1[0])
    sha1.update(list1[1])
    sha1.update(list1[2])

    才生效,验证通过。

    p2的map函数和p3的有所不同,至于哪里不同,有待详细了解。目前以解决问题为主要工作。





  • 相关阅读:
    spring cloud 和 阿里微服务spring cloud Alibaba
    为WPF中的ContentControl设置背景色
    java RSA 解密
    java OA系统 自定义表单 流程审批 电子印章 手写文字识别 电子签名 即时通讯
    Hystrix 配置参数全解析
    spring cloud 2020 gateway 报错503
    Spring Boot 配置 Quartz 定时任务
    Mybatis 整合 ehcache缓存
    Springboot 整合阿里数据库连接池 druid
    java OA系统 自定义表单 流程审批 电子印章 手写文字识别 电子签名 即时通讯
  • 原文地址:https://www.cnblogs.com/Sabre/p/8605942.html
Copyright © 2020-2023  润新知