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

Scriptable向Shelly云发请求授权失败但Postman正常该如何解决?

问题原因

  • 请求头指定了application/x-www-form-urlencoded格式,但直接传入JS对象作为请求体,Scriptable不会自动完成对象到表单格式字符串的序列化,后端无法识别到正确的auth_key参数,因此触发授权错误。
  • 注释掉的JSON序列化写法适配的是application/json格式,和当前请求头不匹配,无法正常使用。

修复方案

先将请求参数手动序列化为x-www-form-urlencoded格式的字符串后再赋值给req.body即可,修改后完整代码如下:

// # open shutter
let url = "https://domain.shelly.cloud";
let suffix ="/device/relay/roller/control/";
let auth_key = "AAAABBBBCCCDDDEEEEFFFFFF____EXAMPLE_TOKEN___AAAABBBBCCCDDDEEEEFFFFFF";

let channel = 0;
let turn = "on";
let direction = "open";
let id = "C45bbe75f1bd";

// 转换为form-urlencoded格式
const formBody = [];
for (const [key, value] of Object.entries({
  "auth_key":auth_key, 
  "id": id, 
  "direction":direction
})) {
  formBody.push(encodeURIComponent(key) + "=" + encodeURIComponent(value));
}
const serializedBody = formBody.join("&");

let req = new Request(url + suffix); 
req.method = "POST";
req.body = serializedBody;
req.headers = { "Content-Type":"application/x-www-form-urlencoded" };

let json = await req.loadJSON()
console.log(json);

可选方案:如果Shelly云接口支持JSON格式传参,也可以直接修改请求头为application/json,同时启用原代码中注释掉的JSON序列化逻辑即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 11:48:04