通用说明

授权流程

将用户secretId以及用户SecretKey转换为签名(Sign),并进行签名认证。
控制台右上角账号-安全设置-API访问秘钥,客户可看到调用权限的账号信息,包括用户secretId以及用户SecretKey。

签名机制

以HTTP/HTTPS协议作为客户端和后台服务接口的对接协议。

客户端可以通过GET或POST方式提交请求,后台以JSON格式返回数据结果。

协议说明

1、请求方法

将请求方法(注意大写)+请求地址+"?"+所有参数按照参数名的字母顺序升序排序后拼接(参数间用&拼接),参见如下:

url=POSThttps://iot-cloudapi.clife.cn/v5x/open/api/device/list? deviceIdentifier=test12345&nonce=23&productId=11477&secretId=e61be431da964cfc9f3d06aacc5d42a3&timestamp=1607034723785

2、签名

使用HMAC-SHA1算法对第一步中获得的签名原文字符串进行签名,然后将生成的签名串使用Base64进行编码后签名字符串生成完成。

如下伪代码所示:sign=Base64.encode(HMAC-SHA1(secertKey,url))

最终访问链接为:

https://iot-cloudapi.clife.cn/v5x/open/api/device/list? deviceIdentifier=test12345&nonce=23&productId=11477&secretId=e61be431da964cfc9f3d06aacc5d42a3 &sign=${sign}&timestamp=1607034723785

3、java签名算法

String content = "POSThttps://iot-cloudapi.clife.cn/v5x/open/api/device/data/history/get? dataTimestamp=1660760824383&devId=320164698341244928&nonce=1&secretId=72fce3a8c9b6404d8598ec8f83e8d9d7&timestamp=1660800784343";

Mac mac = Mac.getInstance("HmacSHA1");

SecretKeySpec secret = new SecretKeySpec(secretKey.getBytes(StandardCharsets.UTF_8), mac.getAlgorithm());

mac.init(secret);

byte[] hash = mac.doFinal(content.getBytes(StandardCharsets.UTF_8));

System.out.println("sign:" + new String(Base64.getEncoder().encode(hash)));

sign : NhlEmlQzTe555dzm7FjSQKgpwvs=

公共参数

参数名称是否必须字段类型参数说明
secretIdstring接口访问用户secretId(secretId与secertKey由平台生成)
signstring签名
timestampnumber当前时间戳
noncenumber随机正整数

分页信息

参数名称基础信息字段类型参数说明
pageIndexnumber请求的页(从1开始),不设则默认为1
pageRowsnumber请求的每页行数,不设则默认为defaultPageRows,最大限制20行
totalRowsnumber总行数
totalPagesnumber总页数
defaultPageRowsnumber默认每页行数:20
currPageRowsnumber当前页的实际行数
pageStartRownumber当前页的起始行(从0开始,有可能超出总行数)
pageEndRownumber当前页的结束行(从0开始,有可能超出总行数)
hasPrevPageboolean是否有前一页
hasNextPageboolean是否有后一页