You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用curl调用Tuya API时签名无效(错误码1004)求助

问题描述

调用Tuya API时始终返回签名无效错误:

{"code":1004,"msg":"sign invalid","success":false,"t":1664314067553}

已确认签名生成逻辑符合HMAC-SHA256(client_id + t, secret)规则,且通过文档示例验证签名正确,但请求时失败。怀疑是时间同步或签名与请求的t不匹配问题,当前脚本如下:

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}]}"

解决方案

1. 修复请求头的t参数错误

脚本中--header "t: t"是硬编码字符串t,并非生成签名时使用的13位时间戳变量,必须改成--header "t: $t",这是导致签名不匹配的核心原因。

2. 修正access_token的错误使用

你把secret值填到了access_token字段里,这是完全错误的:

  • secret是用于生成签名的密钥
  • access_token需要通过Tuya的授权接口(如/v1.0/token)获取,不能直接用secret替代

3. 优化签名生成的可靠性

用printf替代echo -n,避免不同环境下echo的换行行为差异:

sign1=$(printf "%s%s" "yyr8hxxxxxxxxd4mji" "$t" | openssl dgst -sha256 -hmac "cc75fd7xxxxxxxxx63d032b" | awk '{print $2}')

4. 同步系统时间

确保本地系统时间与Tuya服务器时间误差在5分钟以内,可通过NTP同步:

# Ubuntu/Debian
sudo ntpdate pool.ntp.org
# CentOS/RHEL
sudo chronyc makestep

修复后的完整脚本示例

# 获取13位毫秒时间戳
t=$(($(date +%s%N)/1000000))
# 生成签名(转大写)
sign=$(printf "%s%s" "yyr8hxxxxxxxxd4mji" "$t" | openssl dgst -sha256 -hmac "cc75fd7xxxxxxxxx63d032b" | awk '{print $2}' | tr '[:lower:]' '[:upper:]')
# 替换为你实际获取到的access_token
access_token="your_real_access_token"

# 发起POST请求
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 "sign: $sign" \
--header "access_token: $access_token" \
--data '{"commands":[{"code":"switch_1","value":true}]}'

内容的提问来源于stack exchange,提问作者Porcac1x

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 06:15:20