Skip to content

用户授权 / 权限授予

注册或取消注册 Shelly 设备至 Integrator 服务。


Integrator URL

Integrator 使用一个特定构造的 URL,包含之前获取的 tag 和回调 url(建议进行 URL 编码):

https://my.shelly.cloud/integrator.html?itg=<TAG>&cb=<URL>

用户交互

用户需使用其现有的 Shelly 账户登录,然后选择希望与 Integrator 共享的设备。如需,可额外授予访问权限。


回调 URL

当用户注册(add)或取消注册(remove)设备时,Integrator 会通过向提供的回调 URL 发送 POST 请求来接收通知,请求体为 JSON 格式:

json
{
  "userId": number,
  "deviceId": string,
  "deviceType": string,
  "deviceCode": string,
  "accessGroups": string,
  "action": "add|remove",
  "host": "shelly-1-eu.shelly.cloud",
  "name": ["Plug 1"]
}
  • 每个 Shelly 设备可能为其每个通道设置独立名称。
  • Integrator 必须返回 200 OK;否则操作将被终止。

回调 URL 安全性

对于每个回调请求,Shelly Cloud 会附加一个额外的 HTTP 头部:
SCL-Trust:<JWT_TOKEN>,其中 <JWT_TOKEN> 是一个使用 ES384 签名的 JWT 令牌,内容如下:

json
{
  "exp": number, // UNIX 时间戳(TTL:2 分钟)
  "itg": string, // INTEGRATOR_TAG
  "did": string  // DEVICE_ID
}

该令牌的真实性可通过以下公钥进行验证:

-----BEGIN PUBLIC KEY-----
MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE3Kx+6C/0ZbnelYUgucUo4/X4xt1NCmELcoyLpgkuLHume4VLZnQjtXeYgzr2FUdsO/ip8SzssSu3CEU9ArvB+yGIlW7l1yLtwHVs/2zXrL0riL++7jdoQCpTGanFVzpM
-----END PUBLIC KEY-----

该令牌确保请求确实来自 Shelly Cloud 实例,因为它是使用仅 Shelly Cloud 可访问的私钥签名的。令牌有效期为 两分钟,且作用范围限定于单个设备 ID 和集成器,使得重放攻击几乎不可能实现——尤其是结合 TLS 流量在 Shelly Cloud 与 Integrator 后端之间传输时难以窃听和解密的特性。


取消订阅设备

此功能允许任意 Integrator 将此前已注册的设备从数据同步中移除。Integrator 有责任通知客户端该操作。

bash
curl -X POST https://<HOST>.shelly.cloud/integrator/unsubscribe_device \
     -H 'Authorization: Bearer <JWT>' \
     -d "id=<DEVICE_ID>"