根据文档验证消息有效性:
https://microapp.bytedance.com/docs/zh-CN/mini-app/develop/component/message-push-customer-service/
开发者通过校验 signature 来判断请求是否来自于今日头条服务器。signature 生成方式为:
1、将开发者填写的 token、timestamp、nonce、msg 四个参数进行字典序排序,并拼接(不用任何符号,直接拼接)成一个字符串。
2、将上一步得到的字符串进行 sha1 加密。
复现步骤
收到消息:
{"msg":"{\"ToUserName\":\"tt453f3382da01aeed01\",\"FromUserName\":\"573b63c9-8eec-458c-a109-dc28bf2d447a\",\"CreateTime\":1658124409016,\"MsgType\":\"text\",\"Content\":\"测试微信\"}","msg_signature":"1cfa3d1c4aeb7dc6adea859ae3845f231b0cd677","nonce":"8040","timestamp":"1658124409"}
- 验证失败,如下图
1、 token、timestamp、nonce、msg参数拼接时,是否是参数“名和值”都要拼接么?
2、sha1 加密时,字符转二进制使用的什么编码呢?
3、验证过程是否有参照代码?