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


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

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

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

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

    同样的,网上有大量的关于那个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的有所不同,至于哪里不同,有待详细了解。目前以解决问题为主要工作。





  • 相关阅读:
    C# 空合并运算符 ??
    基于ASP.NET Core 创建 Web API
    使用 csc.exe 编译C#代码
    NPOI创建Excel批注
    http协议 put、delete请求asp.net mvc应用,报404错误
    visual studio清理nuget包缓存
    String.IsNullOrEmpty 与 String.IsNullOrWhiteSpace
    C# linq to xml 简单示例
    SQL Server修改表结构,不允许保存更改。
    SQL Server 分离与附加数据库
  • 原文地址:https://www.cnblogs.com/Sabre/p/8605942.html
Copyright © 2020-2023  润新知