部分设备希望在生产时烧录同一个SecretNo以降低生产成本,管理员可在服务商管理端添加设备时勾选“该型号设备使用同一个初始SecretNo”(如下图),勾选此选项后,此型号下登记sn得到均为seedSecreteNo(初始secretNo),此类型的secretNo仅可应用于“获取SecretNo(get_secret_no)”接口来将统一的seedSecretNo换为每个设备独立的SecretNo,成功换取之后设备可通过新得到的secretNo发起“注册网络”请求。 我也遇到相同的问题,这一段问题描述的比较模糊,对于勾选同一初始secretNo,一开始不理解这个secretNo值是什么,“seedSecreteNo”?签名一直是非法的,仔细看才知道登记SN时微信会生成一个secretNo初始值,长度为32。 我理解如下 原文:device_signature = sha1(sort(sn、seedSecretNo、timestamp、nonce, “secret_no”)) 例如: sn = 111 seedSecretNo=22222222222222222222222222222222(由微信后台生成,应该是每一类型号设备唯一) timestamp = 333 nonce=444 secret_no=secret_no 组合起来则是 device_signature = sha1(11122222222222222222222222222222222333444secret_no) = 721798b80b870632bab293b102686d4400484ea1
智慧硬件--device_signature签名老是错误智慧硬件--获取SecretNo的时候老是说签名错误 请仔细说明或者出一个案例说明一下这些参数的具体意思和拼接。主要是签名这个参数(device_signature)的组装,我无论咋个组装,弄出来的签名始终是不正确的。 1、还是说我调用接口的时候必须要使《服务商后台》创建的应用“安装测试通过”? 2、device_signature参数生成的时候有个secret_no的常量,这个东西是直接传递给你“secret_no”还是说我可以传“123”这样子来区分我的场景? 3、seedSecretNo参数和secret_no参数,以及初始secretNo参数,这三个参数让我傻傻分不清楚。 一下是我对生成device_signature的文档的理解: 原文:device_signature = sha1(sort(sn、seedSecretNo、timestamp、nonce, “secret_no”)) 例如: sn = 111 seedSecretNo=222 timestamp = 333 nonce=444 secret_no=555 组合起来则是 device_signature = sha1(sort(111222333444555)) 以上是我的理解,原谅我才进入这个智慧硬件开发行列,如有大神指点指点万分感激。谢谢 PS官方文档链接:https://work.weixin.qq.com/api/doc#90002/90150/91369
2020-11-10