概述
前一篇文章我們介紹了設備密鑰的認證方式,那麼這裏重點來看如何通過Qt的HTTP接口來實現一型一密動態註冊的流程。
一型一密動態註冊
【官網介紹】
直連設備使用一型一密動態註冊的流程:
- 在物聯網平臺預註冊設備,並獲取產品證書(ProductKey和ProductSecret)。預註冊設備時,可以使用設備的MAC地址或SN序列號等作爲DeviceName。
- 在控制檯開啓設備所屬產品的動態註冊開關。
- 將產品證書燒錄至固件。
- 設備向雲端發起身份認證。雲端認證成功後,下發DeviceSecret。
- 設備使用設備證書與雲端建立連接。
直連設備動態註冊,通過HTTP發送請求。 需先在控制檯上,開通該產品的一型一密動態註冊功能,如下,這個開關要打開:
URL模板: https://iot-auth.cn-shanghai.aliyuncs.com/auth/register/device
HTTP方法: POST
請求數據格式:
POST /auth/register/device HTTP/1.1
Host: iot-auth.cn-shanghai.aliyuncs.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 123
productKey=1234556554&deviceName=deviceName1234&random=567345&sign=adfv123hdfdh&signMethod=HmacMD5
響應數據格式:
{
"code": 200,
"data": {
"productKey": "1234556554",
"deviceName": "deviceName1234",
"deviceSecret": "adsfweafdsf"
},
"message": "success"
}
參數說明:
根據官網的接口說明,我們使用Qt接口來請求。
Qt Http post請求動態註冊設備
QString productKey = "xxxxx";
QString productSecret = "xxxxx";
QString deviceName = "xxxxx";
QString message = "deviceNameXXXXXXproductKeyXXXXXXXrandom123222";
QUrlQuery params;
QString sign = QMessageAuthenticationCode::hash(message.toLocal8Bit(),
productSecret.toLocal8Bit(),
QCryptographicHash::Sha1).toHex();
params.addQueryItem("productKey",productKey);
params.addQueryItem("deviceName",deviceName);
params.addQueryItem("random","123222");
params.addQueryItem("sign",sign);
params.addQueryItem("signMethod","HmacSHA1");
QNetworkRequest request;
QString data = params.toString();
request.setUrl(QString("https://iot-auth.cn-shanghai.aliyuncs.com/auth/register/device"));
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded;");
request.setHeader(QNetworkRequest::ContentLengthHeader, data.size());
m_pNetWorkManager->post(request,data.toUtf8() );
注意,雖然是動態註冊設備,但前提要現在阿里雲IOT上創建好設備。上面代碼中的xxxx換成自己的響應信息。
在正式項目中,也可以選擇批量添加設備。
請求完成就會收到服務器下發的數據啦:
"{\"code\":200,\"data\":{\"deviceName\":\"xxxxxxxxx\",\"deviceSecret\":\"xxxxxxxxxxxx\",\"productKey\":\"xxxxxxxx\"},\"message\":\"success\"}"
ok,這時候就請求到設備的deviceSecret
了,接下來就可以通過這些信息去正式連接服務器。關於連接的部分已經在前面的文章中介紹過了,詳情看這裏。