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

在Google Apps Script中调用SensorPush API获取授权令牌遇认证缺失错误

解决SensorPush API获取授权令牌的问题

错误原因

你当前的代码只发送了一个不带任何认证信息的GET请求,而SensorPush的/oauth/authorize接口需要通过POST请求传递用户名和密码,同时设置正确的请求头,所以才会返回「缺少认证令牌」的400错误。

修正后的代码

function restAPI() {
  var scriptProperties = PropertiesService.getScriptProperties();
  var username = scriptProperties.getProperty("username");
  var password = scriptProperties.getProperty("password");
  
  // 配置请求参数:POST方法,携带JSON格式的认证信息
  var options = {
    'method': 'post',
    'contentType': 'application/json',
    'muteHttpExceptions': true,
    'payload': JSON.stringify({
      "email": username,
      "password": password
    })
  };
  
  var url = 'https://api.sensorpush.com/api/v1/oauth/authorize';
  var response = UrlFetchApp.fetch(url, options);
  var responseData = JSON.parse(response.getContentText());
  
  Logger.log("授权响应:" + JSON.stringify(responseData, null, 2));
  
  // 如果成功获取令牌,可将其存入ScriptProperties供后续接口调用使用
  if (responseData.token) {
    scriptProperties.setProperty("sensorpush_token", responseData.token);
    Logger.log("令牌已保存");
  }
}

关键修改点说明

  • 设置method: 'post':该接口仅接受POST请求,默认GET请求会直接触发认证错误
  • 添加contentType: 'application/json':明确告知服务器请求体为JSON格式
  • 在payload中用JSON.stringify将用户名密码转为JSON字符串,接口要求用email和password字段传递认证信息
  • 解析响应内容便于查看结果,同时支持将令牌持久化存储,避免重复登录

后续接口调用示例(使用令牌)

获取到令牌后,调用SensorPush其他API时需在请求头中携带令牌,示例如下:

function getSensorList() {
  var scriptProperties = PropertiesService.getScriptProperties();
  var token = scriptProperties.getProperty("sensorpush_token");
  
  var options = {
    'headers': {
      'Authorization': 'Bearer ' + token
    },
    'muteHttpExceptions': true
  };
  
  var url = 'https://api.sensorpush.com/api/v1/sensors/list';
  var response = UrlFetchApp.fetch(url, options);
  Logger.log(response.getContentText());
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 09:48:16