【发布时间】:2022-10-25 19:27:16
【问题描述】:
我在使用 curl 时很难调用 Tuya API。
涂鸦需要生成签名如下: HMAC-SHA256(client_id + t,秘密)。 我构建了一个小脚本,它完全按照 Tuya 的要求。我还通过尝试使用与文档中相同的 client_id、t 和 secret 作为示例生成签名进行了仔细检查,并且生成的签名与文档中的内容相匹配。
client_id 是一个预先分配的值 t 是 13 位数字的时间戳(我认为这是错误所在) secret 是一个预先分配的值
构建签名后,需要在 POST 调用中通过 curl 使用,但涂鸦一直拒绝签名,并出现以下错误:
{"code":1004,"msg":"sign invalid","success":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}]}"
我当然已经尝试过使用 && 一起执行所有命令,但没有任何变化。有人有什么想法吗?
【问题讨论】: