标签: tuya

通过bash调用涂鸦API

我在使用curl时很难调用Tuya API。

涂鸦需要生成如下签名:HMAC-SHA256(client_id + t, Secret)。我构建了一个小脚本,完全按照 Tuya 的要求进行操作。我还通过尝试使用其文档中的相同 client_id、t 和 Secret 来生成签名作为示例进行了双重检查,并且生成的签名与文档中的内容相匹配。

client_id 是一个预先分配的值 t 是 13 位的时间戳(这里我认为这是错误所在) Secret 是一个预先分配的值

签名构建完成后,需要在 POST 调用中通过curl使用,但涂鸦一直拒绝签名,并出现以下错误:

{"code":1004,"msg":"签名无效","成功":false,"t":1664314067553}

现在,我认为问题在于时机。为了让我的脚本生成签名需要几毫秒,并且当 t 的值传递给curl 时,它与curl 的执行不匹配(当然)。这是我的代码:

t=($(($(date +%s%N)/1000000))); sign1=$(echo -n "yyr8hxxxxxxxxd4mji$t" | openssl dgst -sha256 -hmac "cc75fd7xxxxxxxxx63d032b" | awk '{print$2}') && sign2=$(echo ${sign1^^}) ; curl --request POST "https://openapi.tuyaeu.com/v1.0/iot-03/devices/717715xxxxxxx520/commands" --header "sign_method: HMAC-SHA256" --header "client_id: yyr8hxxxxxxxxd4mji" --header "t: t" --header "mode: cors" --header "sign: $sign2" --header "access_token: cc75fd7xxxxxxxxx63d032b" --data "{"commands":[{"code":"switch_1","value":true}]}"
Run Code Online (Sandbox Code Playgroud)

我当然已经尝试使用 && 一起执行所有命令,但没有任何变化。有人有什么想法吗?

bash curl tuya

2
推荐指数
1
解决办法
2482
查看次数

标签 统计

bash ×1

curl ×1

tuya ×1