将用(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格式返回數據結果。
将請求方法(注意大(big)寫)+請求地(land)址+"?"+所有參數按照參數名的(of)字母順序升序排序後拼接(參數間用(use)&拼接),參見如下:
url=POSThttps://iot-cloudapi.clife.cn/v5x/open/api/device/list? deviceIdentifier=test12345&nonce=23&productId=11477&secretId=e61be431da964cfc9f3d06aacc5d42a3×tamp=1607034723785
使用(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}×tamp=1607034723785
String content = "POSThttps://iot-cloudapi.clife.cn/v5x/open/api/device/data/history/get? dataTimestamp=1660760824383&devId=320164698341244928&nonce=1&secretId=72fce3a8c9b6404d8598ec8f83e8d9d7×tamp=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行 |
totalRows | 否 | number | 總行數 |
totalPages | 否 | number | 總頁數 |
defaultPageRows | 是(yes) | number | 默認每頁行數:20 |
currPageRows | 否 | number | 當前頁的(of)實際行數 |
pageStartRow | 是(yes) | number | 當前頁的(of)起始行(從0開始,有可能超出(out)總行數) |
pageEndRow | 是(yes) | number | 當前頁的(of)結束行(從0開始,有可能超出(out)總行數) |
hasPrevPage | 否 | boolean | 是(yes)否有前一(one)頁 |
hasNextPage | 否 | boolean | 是(yes)否有後一(one)頁 |