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);

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要在Django中对接企业微信机器人,你需要使用企业微信提供的开发接口和Django的功能来实现。下面是一个简单的步骤: 1. 获取企业微信开发凭证:首先,在企业微信开发者平台上注册一个账号,并创建一个企业应用。在创建应用时,你将得到一个CorpID(企业ID)和一个Secret(密钥),它们将用于后续的认证和访问。 2. 配置企业微信回调URL:在企业微信开发者平台上,配置你的应用的回调URL。这个URL将用于接收企业微信发送的消息和事件。 3. 创建Django应用:使用Django的命令行工具创建一个新的Django应用。你可以运行`python manage.py startapp appname`来创建一个新的应用。"appname"是你给应用起的名称。 4. 编写机器人逻辑:在你创建的Django应用目录中,打开views.py文件,并编写处理企业微信消息和事件的逻辑。你可以使用企业微信提供的API来发送和接收消息,处理事件等。 5. 配置URL路由:打开项目目录下的urls.py文件,配置URL路由以将请求发送到你编写的机器人视图。你可以使用Django的URL路由机制来匹配URL和视图函数。 6. 配置企业微信回调URL验证:在你的Django应用中,编写一个视图函数来处理企业微信的URL验证请求。你需要将企业微信发送的验证参数进行处理,并返回相应的响应。 7. 运行开发服务器:保存你的代码并在命令行中运行`python manage.py runserver`来启动Django的开发服务器。确保你的应用和URL配置正确无误。 8. 部署应用程序:当你完成了测试,你可以将你的Django应用程序部署到生产环境中,以便可以在企业微信中使用你的机器人。 请注意,以上步骤只是一个简单的示例,实际上还有很多其他的细节和功能可以涉及。你需要参考企业微信开发文档和Django文档来了解更多详细信息,并根据你的具体需求进行定制和扩展。希望这对你有所帮助!如果你还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值