php对接飞书机器人

有同事接到对接飞书机器人任务,开发中遇到响应错误:

{"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;charset=UTF-8', 'content' => $postData, 'timeout' => 60)
);
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
var_dump($result);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/116716.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Python】取火柴小游戏(巴什博弈)

火柴游戏:Python编程示例 当我们想要玩一个简单而有趣的游戏,同时又想锻炼自己的编程技能时,一个经典的选择就是火柴游戏。这个游戏的规则很简单:有一堆火柴,每次可以拿走1到6根,两名玩家轮流取火柴&#…

Java NIO

Java NIO 一,介绍 Java NIO(New IO)是 JDK 1.4 引入的一组新的 I/O API,用于支持非阻塞式 I/O 操作。相比传统的 Java IO API,NIO 提供了更快、更灵活的 I/O 操作方式,可以用于构建高性能网络应用程序。 …

京东数据分析:2023年9月京东白酒行业品牌销售排行榜

鲸参谋监测的京东平台9月份白酒市场销售数据已出炉! 9月白酒市场的整体热度较高,贵州茅台先是与瑞幸联名推出酱香拿铁,后又宣布与德芙推出联名产品酒心巧克力,引起了诸多消费者的关注。在这一热度的加持下,从销售上看&…

深入理解Redis集群模式、协议、元数据维护方式

文章目录 🍊 集群模式🍊 集群协议🍊 元数据维护方式🎉 集中式🎉 gossip 协议 📕我是廖志伟,一名Java开发工程师、Java领域优质创作者、CSDN博客专家、51CTO专家博主、阿里云专家博主、清华大学出…

第01章-Java语言概述

目录 1 常见DOS命令 常用指令 相对路径与绝对路径 2 转义字符 3 安装JDK与配置环境变量 JDK与JRE JDK的版本 JDK的下载 JDK的安装 配置path环境变量 4 Java程序的编写与执行 5 Java注释 6 Java API文档 7 Java核心机制:JVM 1 常见DOS命令 DOS(…

52832 3通道ADC笔记

因为业务需要, 需要在52832上, 采集3个pin的电压. 52832的ADC, 分为什么single, 连续, 扫描模式 single就是只有一个通道并采集一次, 连续就是不停的扫描, 如果要捕捉声音之类, 就配合DMA, 连续不停的采集, 转换就行了. 扫描模式就是如果是多通道, 就一开始初始化多个通道, 存放…

Lua-http库写一个爬虫程序怎么样 ?

以下是一个使用Lua-http库编写的一个爬虫程序,该爬虫使用Lua语言来抓取www.snapchat.com的内容。 代码必须使用以下代码:get_proxy -- 导入所需的库 local http require("http") local json require("json")-- 定义爬虫IP服务器 …

安装docker ,更换docker版本

docker dockerd & containerd Dockerd(Docker 守护进程)在其底层使用 Containerd 来管理容器。Containerd 是一个开源的容器运行时管理器,由 Docker 公司于2017年开发并开源,它负责实际的容器生命周期管理。 以下是 Docker 守…

力扣每日一题49:字母异位词分组

题目描述: 给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例 1: 输入: strs ["eat", "tea", "tan", "ate&quo…

清华训练营悟道篇之浅谈操作系统

文章目录 前言系统软件执行环境操作系统的功能操作系统组成 前言 操作系统是一个帮助用户和应用程序使用和管理计算机资源的软件,它控制着嵌入式设备、更通用的系统(如智能手机、台式计算机和服务器)以及巨型机等各种计算机系统 系统软件 …

Element的MessageBox自定义图标

Element的MessageBox 弹框如何自定义图标_如何替换 el message box 的图标-CSDN博客

【前段基础入门之】=>CSS3新增渐变颜色属性

导语: CSS3 新增了,渐变色 的解决方案,这使得我们可以绘制出更加生动的炫酷的的配色效果 线性渐变 多个颜色之间的渐变, 默认从上到下渐变 background-image: linear-gradient(red,yellow,green); /*默认从上到下渐变*/默认从上…

期中考核复现

web 1z_php ?0o0[]1A&OoO[]2023a include "flag.php":尝试包含名为 "flag.php" 的文件。这意味着它会尝试引入一个名为 "flag.php" 的脚本文件,其中可能包含一些敏感信息或标志。 error_reporting(0):…

腾讯待办是不是停了?能准时提醒待办事项的APP

有不少网友会使用“腾讯待办”小程序来记录待办的事情,并且设置提醒时间,进行任务管理。不过有不少网友最近在使用腾讯待办小程序的时候,看到了“业务关停通知”的弹窗,想问一下,腾讯待办是不是停了?确实如…

node.js中express框架cookie-parser包设置cookie的问题

后端使用node.js express cookie-parser技术栈设置cookie的时候出现了无法成功设置的问题 前端发送axios请求部分代码: axios({method: "post",data: {content: remark,relatedArticles: relatedArticleId,userId: userId,userEmail: userEmail,topRema…

如何在Puppeteer中设置User-Agent来绕过京东的反爬虫机制?

概述 京东作为中国最大的电商平台,为了保护其网站数据的安全性,采取了一系列的反爬虫机制。然而,作为开发者,我们可能需要使用爬虫工具来获取京东的数据。 正文 Puppeteer 是一个由 Google 开发的 Node.js 库,它提供…

JAVA 同城服务预约家政小程序开发的优势和运营

随着社会节奏的加快,人们对家庭清洁和维护的需求日益增长。为了满足这一需求,JAVA同城服务预约家政小程序应运而生。本文将详细介绍该小程序开发的优势及运营策略,帮助读者更好地了解其价值和潜力。 一、开发优势 方便快捷:用户…

RHEL 软件包管理 rpm yum 源码编译

rpm安装: rpm -ivh xxx.rpm rpm查询:rpm -q zsh rpm -qa |grep zsh rpm -ql zsh |more #查看一个软件包安装后产生的目录及文件 rpm -qpi /mnt/Packages/lrzsz-0.12.20-36.el7.x86_64.rpm #列出rpm包的详细信息(还未安装的rpm包) rpm -qi zsh…

Spring Security—OAuth2 客户端认证和授权

一、认证—JWT Bearer 关于 JWT Bearer 客户端认证的进一步详情,请参考OAuth 2.0客户端认证和授权许可的 JSON Web Token (JWT)简介。 JWT Bearer 客户端认证的默认实现是 NimbusJwtClientAuthenticationParametersConverter,它是一个 Converter&#…

VMware虚拟机中ubuntu网络连接不上

VMware虚拟机中ubuntu中网络连接不上 解决方案其他虚拟机网络 解决方案 1.选择VMware中编辑-虚拟网络编辑器-更改: 设置为你喜欢的模式,这里为NET模式 2.选中ubuntu虚拟机(关机后的虚拟机),点击:编辑虚拟机…