网站构成的作用,城乡建设部网站施工员证书查询,南京江宁网站制作公司,浦东新区消息今天有同事接到对接飞书机器人任务#xff0c;开发中遇到响应错误#xff1a;
{code: 19021,msg: sign match fail or timestamp is not within one hour from current time
}
意思应该就是签名错误或者时间戳不在有效范围内等#xff0c…有同事接到对接飞书机器人任务开发中遇到响应错误
{code: 19021,msg: sign match fail or timestamp is not within one hour from current time
}
意思应该就是签名错误或者时间戳不在有效范围内等官方文档解释 时间戳是取的实时的也确认过了没问题那基本确认就是签名错误了。
按照文档尝试调试了一下还是一样的结果如果把后台安全设置那个签名去掉的话即不用验签使用curl请求立马就收到消息了
curl -X POST -H Content-Type: application/json \-d {msg_type:text,content:{text:request example}} \https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxx
问题还是签名上文档书写如下 示例代码缺少了php的文档很简单就三步拼接和base64肯定没问题主要问题肯定就是加密算法那里了尝试了hash(sha256,$sign),hash_hmac(sha256, $sign, true, true),hash_hmac(sha256, $sign, **)hash_hmac(sha256, $sign, **,true);等等结果最后同事咨询了技术支持居然是hash_hmac(sha256, , $sign, true);
文档中说吧拼接字符串当做签名字符串我想当然的以为要带入的参数是hash_hmac第二参数结果没想到是第三个也是自己对hash_hmac这个函数的认知比较低的缘故吧。只能说又涨知识了。不知道这是不是坑希望对后面对接的人有帮助写的小demo
$url https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxx;
$timestamp time();
$secret abcdxxxxxx;//秘钥
$sign $timestamp . \n . $secret;
$sign base64_encode(hash_hmac(sha256, , $sign, true));
$body array(timestamp $timestamp,sign $sign,msg_type text,content [text 这是一条测试数据]
);
$postData json_encode($body);
$options array(http array(method POST, header Content-type:application/json;charsetUTF-8, content $postData, timeout 60)
);
$context stream_context_create($options);
$result file_get_contents($url, false, $context);
var_dump($result);