通用(use)說明

授權流程

将用(use)戶secretId以(by)及用(use)戶SecretKey轉換爲(for)簽名(Sign),并進行簽名認證。
控制台右上角賬号-安全設置-API訪問秘鑰,客戶可看到(arrive)調用(use)權限的(of)賬号信息,包括用(use)戶secretId以(by)及用(use)戶SecretKey。

簽名機制

以(by)HTTP/HTTPS協議作(do)爲(for)客戶端和(and)後台服務接口的(of)對接協議。

客戶端可以(by)通過GET或POST方式提交請求,後台以(by)JSON格式返回數據結果。

協議說明

1、請求方法

将請求方法(注意大(big)寫)+請求地(land)址+"?"+所有參數按照參數名的(of)字母順序升序排序後拼接(參數間用(use)&拼接),參見如下:

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

2、簽名

使用(use)HMAC-SHA1算法對第一(one)步中獲得的(of)簽名原文字符串進行簽名,然後将生(born)成的(of)簽名串使用(use)Base64進行編碼後簽名字符串生(born)成完成。

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

最終訪問鏈接爲(for):

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=

公共參數

參數名稱是(yes)否必須字段類型參數說明
secretId是(yes)string接口訪問用(use)戶secretId(secretId與secertKey由平台生(born)成)
sign是(yes)string簽名
timestamp是(yes)number當前時(hour)間戳
nonce是(yes)number随機正整數

分頁信息

參數名稱基礎信息字段類型參數說明
pageIndex是(yes)number請求的(of)頁(從1開始),不(No)設則默認爲(for)1
pageRows是(yes)number請求的(of)每頁行數,不(No)設則默認爲(for)defaultPageRows,最大(big)限制20行
totalRowsnumber總行數
totalPagesnumber總頁數
defaultPageRows是(yes)number默認每頁行數:20
currPageRowsnumber當前頁的(of)實際行數
pageStartRow是(yes)number當前頁的(of)起始行(從0開始,有可能超出(out)總行數)
pageEndRow是(yes)number當前頁的(of)結束行(從0開始,有可能超出(out)總行數)
hasPrevPageboolean是(yes)否有前一(one)頁
hasNextPageboolean是(yes)否有後一(one)頁