docs: add OneNET API reference documentation

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-06-03 11:11:09 +08:00
co-authored by Claude Opus 4.7
parent 69e13f504f
commit 0845c38b72
10 changed files with 840 additions and 0 deletions
+71
View File
@@ -0,0 +1,71 @@
接口地址
https://iot-api.heclouds.com/product/detail
API说明
请求方式:GET
http query 请求参数
参数名称 格式 是否必选 说明
product_id string 是 产品ID
返回数据
参数名称 类型 描述
code int 错误码,当为0时表示请求成功,取值见错误码说明表
msg string 错误描述信息
request_id string API请求链路id
data - 具体响应内容
data.product_id string 产品id
data.access_protocol int 接入协议,取值见接入协议取值说明表
data.data_protocol int 数据协议,取值见数据协议取值说明表
data.name string 产品名称
data.node_type string 节点类型,1-直连设备;2-网关设备;3-子设备
data.create_time datetime 产品创建时间
data.update_time datetime 最近修改时间
data.network string 联网方式
data.manufacturer string 产品厂商
data.model string 产品型号
data.brand string 产品品牌
data.desc string 产品描述
data.status int 开发状态 1-开发中;2-审核中;3-审核未通过;4-已发布;5-已下架
data.own_device_count int 自有设备总数, 缓存时效为5分钟
data.online_device_count int 在线设备总数, 缓存时效为5分钟
data.offline_device_count int 离线设备数, 缓存时效为5分钟
data.not_active_device_count int 未激活设备数, 缓存时效为5分钟
data.query_time int64 查询时间(毫秒时间戳)
data.viot_app_id string 视频类产品返回,用于视频播放器sdk集成参数
示例
请求示例:
https://iot-api.heclouds.com/product/detail?product_id=123
响应示例:
{
"code": 0,
"data": {
"product_id": "fupcJIVEuz",
"name": "MQTT-测试产品",
"node_type": 1,
"access_protocol": 2,
"data_protocol": 1,
"network": "2",
"manufacturer": "",
"model": "",
"brand": "",
"desc": "",
"create_time": "2024-08-20T08:43:05.915Z",
"update_time": "2024-08-20T08:43:56.346Z",
"status": 4,
"viot_app_id": "aaaaaaaaaaaaaaaaa",
"own_device_count": 1, //缓存时效为5分钟
"online_device_count": 0,//缓存时效为5分钟
"offline_device_count": 0,//缓存时效为5分钟
"not_active_device_count": 1,//缓存时效为5分钟
"query_time": 1732097555350
},
"msg": "succ",
"request_id": "b5ed8d0500994f1b8784101b3c8f73d7"
}
+119
View File
@@ -0,0 +1,119 @@
物模型查询
最近更新时间:2024-02-21 16:47:03
接口功能
根据产品id查询指定产品下的物模型功能点
备注
数据协议为OneJson的产品可查询
接口地址
http(s)://iot-api.heclouds.com/thingmodel/query-thing-model
API说明
请求方式:GET
http query 请求参数:
参数 类型 是否必选 描述
product_id string 是 产品id
返回数据
参数名称 类型 描述
code int 调用失败时,返回的错误码
msg string 调用失败时,返回的错误信息
request_id string 调用API时生成的请求标识
data.properties array 数组对象 属性功能点
p.functionMode string 功能点类型,定值'property'
p.identifier string 属性唯一标识符(产品下唯一)
p.name string 属性名称
p.desc string 属性描述
p.accessMode string "属性读写类型:只读(r)或读写(rw)
p.functionType string 是否是标准功能点,自定义(u)/系统(s)
p.dataType object 属性功能点数据
p.dataType.type string 属性类型: int3232位整数)、int6464位整数)、float(单精度浮点)、double(双精度浮点型)、string(字符串)、dateString类型UTC秒)、booltrue或false)、enumint类型)、bitMap(位图)、dateint64类型UTC时间戳毫秒)、struct(结构体类型)、array(数组)
p.dataType.specs object 属性功能点数据
data.events array 数组对象 事件功能点
e.functionMode string 功能点类型,定值'event'
e.identifier string 事件唯一标识符
e.name string 事件名称
e.desc string 事件描述
e.type string 事件类型(info、alert、error
e.fuctionType string 是否是标准功能点,自定义(u)/标准(s)
e.outputData array 参数
e.outputData.identifier string 参数唯一标识符
e.outputData.name string 参数名称
e.outputData.dataType object 参数数据
e.outputData.dataType.type string 属性类型: int3232位整数)、int6464位整数)、float(单精度浮点)、double(双精度浮点型)、string(字符串)、dateString类型UTC秒)、booltrue或false)、enumint类型)、bitMap(位图)、dateint64类型UTC时间戳毫秒)、struct(结构体类型)、array(数组)
services array 数组对象 服务功能点
s.functionMode string 功能点类型,定值'service'
s.identifier string 服务唯一标识符(产品下唯一)
s.name string 服务名称
s.desc string 服务描述
s.callType string 调用方式,同步(s)/异步(a)
s.fuctionType string 功能点类型,自定义(u)/系统(s)
s.input array 输入参数
s.input.identifier string 参数唯一标识符
s.input.name string 参数名称
s.input.dataType object 参数数
s.input.dataType.type string 属性类型: int3232位整数)、int6464位整数)、float(单精度浮点)、double(双精度浮点型)、string(字符串)、booltrue或false)、enumint类型)、bitMap(位图)、dateint64类型UTC时间戳毫秒)、struct(结构体类型)、array(数组)
s.input.dataType.specs object 参数功能点数据
s.output array 输出参数
s.output.identifier string 参数唯一标识符
s.output.name string 参数名称
s.output.dataType object 参数数据
s.output.dataType.type string 属性类型: int3232位整数)、int6464位整数)、float(单精度浮点)、double(双精度浮点型)、string(字符串)、booltrue或false)、enumint类型)、bitMap(位图)、dateint64类型UTC时间戳毫秒)、struct(结构体类型)、array(数组)
s.output.dataType.specs object 参数功能点数据
示例
请求示例
GET http(s)://iot-api.heclouds.com/thingmodel/query-thing-model?product_id=xxx
响应示例
{
"data": {
"properties": [
{
"name": "模式",
"identifier": "model",
"functionType": "u",
"functionMode": "property",
"desc": "",
"accessMode": "rw",
"dataType": {
"type": "enum",
"specs": {
"1": "模式1",
"2": "模式2"
}
}
}
],
"events": [
{
"name": "test",
"identifier": "test",
"functionType": "u",
"functionMode": "event",
"desc": null,
"eventType": "info",
"outputData": [
{
"dataType": {
"type": "bool",
"specs": {
"false": "关",
"true": "开"
}
},
"name": "开关",
"identifier": "switch"
}
]
}
]
},
"request_id": "a25087f46df04b69b29e90ef0acfd115",
"msg": "succ",
"code": 0
}
+49
View File
@@ -0,0 +1,49 @@
获取设备属性详情
最近更新时间:2026-01-16 16:47:29
接口功能
根据产品ID和设备名,下发物模型属性获取命令到设备,设备返回属性值到接口
备注
仅支持OneJson设备,需要设备在线
接口地址
https://iot-api.heclouds.com/thingmodel/query-device-property-detail
API说明
请求方式:POST
http body 请求参数:
参数 类型 是否必选 描述
product_id string 是 产品ID,平台生成唯一ID
device_name string 是 设备名称
params array 是 功能点标识数组,expample: ["light","model"]
返回数据
参数名称 类型 描述
code int 调用成功或失败时,返回的code码
msg string 调用成功或失败时,返回的msg信息
request_id string 调用API生成的请求标识
data - 调用成功时,返回的业务数据
示例
请求示例
POST http(s)://iot-api.heclouds.com/thingmodel/query-device-property-detail
Content-type: application/json
{
"product_id":"B7EEW578EbRg5Y4K",
"device_name":"device3",
"params":["light","model"]
}
响应示例
{
"request_id": "a25087f46df04b69b29e90ef0acfd115",
"msg": "succ",
"code": 0,
"data":{
"light":1,
"model":1
}
}
+76
View File
@@ -0,0 +1,76 @@
设备属性最新数据查询
最近更新时间:2026-01-16 16:47:29
接口功能
根据产品id和设备名,查询设备最新属性功能点数据
备注
支持OneJson、自定义透传数据协议,设备能正常下发上报
接口地址
https://iot-api.heclouds.com/thingmodel/query-device-property
API说明
请求方式:GET
http query 请求参数:
参数 类型 是否必选 描述
product_id string 是 产品ID,平台生成唯一ID
device_name string 是 设备名称
返回数据
参数名称 类型 描述
code int 调用成功或失败时,返回的code码
msg string 调用成功或失败时,返回的msg信息
request_id string 调用API生成的请求标识
data - 调用成功时,返回的业务数据
data.list array 设备属性数据集合
data.list字段结构
[
{
"identifier": string, # 功能点标识
"time": string, # 上报时间,毫秒时间戳
"value": string, # 功能点上报值,json字符串
"data_type": string, # 数据类型 int32、int64、float、double、enum、bool、string、struct、bitMap
"access_mode": string, # 读写类型
"expect_value": string, # 期望值, json字符串,属性功能点具有该字段
"name": string, # 功能点名称
"description": string, # 功能描述
}
]
示例
请求示例
GET http(s)://iot-api.heclouds.com/thingmodel/query-device-property
?product_id=9MaNe52pNO&device_name=no001
响应示例
{
"data":[
{
"access_mode": "读写",
"data_type": "int32",
"description": "二氧化碳",
"expect_value": "800",
"identifier": "CO2",
"name": "二氧化碳",
"time": "1592797444539",
"value": "600"
},
{
"access_mode": "读写",
"data_type": "bool",
"description": "关",
"expect_value": "true",
"identifier": "fan",
"name": "风扇",
"time": "1592797444539",
"value": "false"
}
],
"request_id": "a25087f46df04b69b29e90ef0acfd115",
"msg": "succ",
"code": 0
}
+64
View File
@@ -0,0 +1,64 @@
设备属性记录查询
最近更新时间:2026-01-16 16:47:29
接口功能
根据产品id设备名称时间范围等参数,查询设备属性历史功能点数据
备注
支持OneJson、自定义透传数据协议,设备能正常下发上报
接口地址
https://iot-api.heclouds.com/thingmodel/query-device-property-history
API说明
请求方式:GET
http query 请求参数:
参数 类型 是否必选 描述
product_id string 是 产品ID,平台生成唯一ID
device_name string 是 设备名称
identifier string 是 属性功能点标识
start_time string 是 查询起始时间,毫秒时间戳
end_time string 是 查询结束时间,毫秒时间戳
sort string 否 排序参数 1-正序 2-倒序 默认倒叙
offset string 否 请求起始位置,默认0
limit string 否 每次请求记录数,默认10, 范围[1, 100]
返回数据
参数名称 类型 描述
code int 调用成功或失败时,返回的code码
msg string 调用成功或失败时,返回的msg信息
request_id string 调用API生成的请求标识
data - 调用成功时,返回的业务数据
data.list array 设备属性数据集合
data.list字段结构
[
{
"value": string, # 属性功能点上报值
"time": int, # 属性功能点上报时间
}
]
示例
请求示例
GET http(s)://iot-api.heclouds.com/thingmodel/query-device-property-history
?product_id=9MaNe52pNO&device_name=no001&identifier=someDate&start_time=1681713647000&end_time=1681799966562
响应示例
{
"data": [
{
"time": "1592810751988",
"value": "false"
},
{
"time": "1592810746988",
"value": "true"
}
],
"request_id": "a25087f46df04b69b29e90ef0acfd115",
"msg": "succ",
"code": 0
}
+90
View File
@@ -0,0 +1,90 @@
查询设备数据点
最近更新时间:2026-01-16 16:47:29
接口功能
根据产品id和设备名称查询,时间范围参数,查询设备历史数据点信息
备注
仅支持数据流、IPSO数据协议,设备能正常下发上报
接口地址
http(s)://iot-api.heclouds.com/datapoint/history-datapoints
API说明
请求方式:GET
http query 请求参数:
参数 类型 是否必选 描述
datastream_id string 否 数据流ID,多个id之间用逗号分开,缺省时取数据流或数据流模板100条为缺省数据流id条件
product_id string 是 产品ID,平台生成唯一ID
device_name string 是 设备名称
imei string 否 lwm2m协议时传,设备imei
start string 否 提取数据点的开始时间,精确到秒,示例:2015-01-10T08:00:35
end string 否 提取数据点的结束时间,精确到秒,示例:2015-01-10T08:00:35
duration int 否 查询时间区间,单位为秒
limit int 否 限定本次请求最多返回的数据点数,默认100,范围为(0,6000]
cursor string 否 指定本次请求继续从cursor位置开始提取数据
sort enum 否 时间排序方式,DESC:倒序,ASC:升序,默认为DESC
返回数据
参数名称 类型 描述
code int 调用成功或失败时,返回的code码
msg string 调用成功或失败时,返回的msg信息
request_id string 调用API生成的请求标识
data - 调用成功时,返回的业务数据
data.count int 本次返回的数据点数量
data.cursor string 本次请求若未能返回所有数据,则会返回cursor参数,用户可以携带cursor参数进行再次请求,获取剩下的数据
data.datastreams array-json 设备数据流信息的json数组,见datastreams描述
datastreams描述表
参数名称 格式 说明
id string 数据流名称
datapoints array-json 数据点信息的json数组,见datapoints描述表
datapoints描述表
参数名称 格式 说明
at string 数据记录时间
value string/int/json... 数据点的值
特别说明
当startend时间均为空
i) limit
不传值或传值等于1时:排序为升序则查询最早一个数据点(30天内),否则查询最新数据点(最新缓存数据)
ii) limit
传值大于1时:排序为升序则查询最早x条数据点,否则查询最新x条数据点(30天内,x=limit)
示例
请求示例
GET http(s)://iot-api.heclouds.com/datapoint/history-datapoints
?product_id=XhONWQ5zV5&device_name=mqtts-dev&datastream_id=ds&start=2017-01-01T00:00:00&limit=100
响应示例
{
"data":{
"cursor":"25971_564280_1448961152173",
"count":5,
"datastreams":[
{
"datapoints":[
{
"at":"2015-12-01 17:10:24.981",
"value":"35"
},
{
"at":"2015-12-01 17:10:53.406",
"value":"38"
},
...
],
"id":"3200_0_5501"
},
...
]
},
"request_id": "a25087f46df04b69b29e90ef0acfd115",
"msg": "succ",
"code": 0
}
+128
View File
@@ -0,0 +1,128 @@
设备详情
最近更新时间:2026-03-30 09:58:43
接口说明
查询平台上已注册设备的详细信息
接口地址
https://iot-api.heclouds.com/device/detail
API 说明
请求方式:GET
httpquery 请求参数
参数名称 格式 是否必选 说明
product_id string 产品 id+设备名称、imei 二选一必填 产品 ID
device_name string 产品 id+设备名称、imei 二选一必填 设备名称
imei string 产品 id+设备名称、imei 二选一必填 设备 imei(当设备来自于老平台下 NB 套件产品时,imei 必填,且 device_name 应当为空)
返回数据
参数名称 类型 描述
code int 错误码,当为 0 时表示请求成功,取值见错误码说明表
msg string 错误描述信息
request_id string API 请求链路 id
data - 具体响应内容
data.did int/string 设备 id
data.pid string 产品 id
data.access_pt int 接入协议,取值见接入协议取值说明表
data.data_pt int 数据协议,取值见数据协议取值说明表
data.name string 设备名称
data.desc string 设备描述
data.auth_info --- ---
data.status int 设备状态,0-离线,1-在线,2-未激活
data.create_time datetime 设备创建时间
data.activate_time datetime 设备激活时间
data.last_time datetime 设备最后一次在线时间
data.sec_key string 设备接入鉴权 key
data.imei string LwM2M 设备 imei
data.imsi string LwM2M 设备 imsi
data.psk string LwM2M 设备 psk
data.auth_code string LwM2M 设备 auth_code
data.intelligent_way int 产品智能化方式,1-设备接入、2-产品智能化
data.group_id string 设备分组 id
data.enable_status bool 设备启用状态
data.tags string-array 设备标签列表
data.lon string 经度
data.lat string 纬度
data.chip --- ---
data.obsv bool 设备资源自动订阅是否启用
data.obsv_st bool 设备资源自动订阅状态
data.private bool 设备私密性
data.imsi_old string-array 设备 imsi 历史变更记录
data.imsi_mt datetime 设备 imsi 最近一次修改时间
视联网设备时返回以下字段
data.viot_device_sn string 视频设备编码,视联网设备返回
data.viot_protocol int 视频设备接入协议,视联网设备返回
1-GB28181 协议
2-千里眼协议
data.viot_device_type int 视频设备设备类型,视联网设备返回
1-IPC
2-NVR
视联网国标协议设备时返回
data.viot_sip_server_id string SIP 服务器 ID,国标摄像头设备返回
data.viot_sip_server_domain string SIP 服务器域,国标摄像头设备返回
data.viot_sip_server_ip string SIP 服务器 IP,国标摄像头设备返回
data.viot_sip_server_port string SIP 服务器端口,国标摄像头设备返回
data.viot_login_name string 登录用户名,国标摄像头设备返回
data.viot_login_pwd string 登录密码,国标摄像头设备返回
视联网千里眼协议设备时返回
data.viot_module_id string 设备 modelId,如:cmiot_E4702_002
data.viot_camera_app_version string 软件版本,如:2.860.20250512
data.viot_firmware_version string 固件版本,如:2.860.20250512
data.viot_imei string 千里眼设备 imeicmei),如:119094672043670
机卡协同设备上报数据,设备上报后返回
data.up_iccid string 设备上报的iccid,如:898604310000000000
data.up_msisdn string 设备上报的msisdn,如:+8613800000000
data.up_sn string 设备上报的sn
data.up_imei string 设备上报的imei,如:119094672043670
data.up_imsi string 设备上报的imsi,如:460010000000000
data.up_mac string 设备上报的mac,如:08:00:27:01:02:03
data.up_network int 设备上报的网络类型,0-非蜂窝网, 1-移动,2-电信,3-联通,4-广电
示例
请求示例:
GET https://iot-api.heclouds.com/device/detail?product_id=123&device_name=dname
响应示例:
{
"code": 0,
"data": {
"did": 2502614722,
"pid": "FUSZT1w5t2",
"access_pt": 51,
"auth_info": "e02efee79b5a-pro",
"data_pt": 3,
"name": "e02efee79b5a-pro",
"desc": "",
"status": 1,
"create_time": "2025-11-28T09:49:00.613+08:00",
"activate_time": "2025-12-01T15:38:51.073+08:00",
"last_time": "2025-12-01T15:38:51.073+08:00",
"imsi": "",
"imei": "",
"psk": "",
"group_id": "",
"enable_status": true,
"tags": [],
"lat": "",
"lon": "",
"auth_code": "",
"sec_key": "",
"chip": 0,
"obsv": false,
"obsv_st": false,
"private": false,
"imsi_old": [],
"imsi_mt": "0001-01-01T08:05:43+08:05",
"intelligent_way": 1,
"viot_device_sn": "e02efee79b5a",
"viot_protocol": 2,
"viot_device_type": 1,
"viot_module_id": "cmiot_E4702_002",
"viot_camera_app_version": "2.860.20250512",
"viot_firmware_version": "2.860.20250512",
"viot_imei": "119094672043670"
},
"msg": "succ",
"request_id": "a3d0de892827437b9ad2aa9e6754fb40"
}
+71
View File
@@ -0,0 +1,71 @@
设备事件记录查询
最近更新时间:2025-07-02 10:27:26
接口说明
查询设备的事件记录
接口地址
https://iot-api.heclouds.com/device/event-log
API说明
请求方式:GET
http query 请求参数:
参数名称 格式 是否必选 说明
product_id string 产品id+设备名称、imei二选一必填 产品ID
device_name string 产品id+设备名称、imei二选一必填 设备名称
imei string 产品id+设备名称、imei二选一必填 设备imei (当设备来自于老平台下NB套件产品时,imei必填,且device_name应当为空)
start_time long 是 查询起始时间-毫秒时间戳
end_time long 是 查询截止时间-毫秒时间戳
identifier string 否 事件功能点标识
event_type int 否 事件类型,1-信息,2-告警,3-故障
offset int 否 请求起始位置,默认0
limit int 否 每次请求记录数,默认10,范围[1,100]
返回数据
参数名称 类型 描述
code int 错误码,当为0时表示请求成功,取值见错误码说明表
msg string 错误描述信息
request_id string API请求链路id
data - 具体响应内容
data.list Object-array 设备事件记录列表
data.list[0].event_type int 事件类型,1-信息,2-告警,3-故障
data.list[0].time long 设备事件上报时间戳
data.list[0].identifier string 事件功能点标识
data.list[0].name string 事件名称
data.list[0].value string 事件值
data.limit string 本次请求记录数上限
data.offset string 本次请求起始位置
示例
请求示例:
GET https://iot-api.heclouds.com/device/event-log?
imei=1234512345&start_time=1592398420000&end_time=1592398421297
响应示例:
{
"code": 0,
"data": {
"list": [
{
"event_type": 1,
"identifier": "lock_event",
"name": "lock_event",
"time": 1592814341051,
"value": "{\"type\":1, \"user\":27010}"
},
{
"event_type": 1,
"identifier": "lock_event",
"name": "lock_event",
"time": 1592814336050,
"value": "{\"type\":2, \"user\":27010}"
}
],
"limit": 10,
"offset": 0
},
"msg": "succ",
"request_id": "a25ffffddsfddb69b29e90ef0acfd115"
}
+102
View File
@@ -0,0 +1,102 @@
设备列表
最近更新时间:2025-12-22 10:38:50
接口说明
用于查询产品下的设备列表,支持通过设备名称左前缀模糊匹配。
接口地址
https://iot-api.heclouds.com/device/list
API说明
请求方式:GET
http query 请求参数
参数名称 格式 是否必选 说明
product_id string 是 产品ID
device_name string 否 设备名称(左前缀模糊匹配)
offset int 否 查询起始下标,默认为0
limit int 否 单次查询数量限额,默认为10,最大为100
返回数据
参数名称 类型 描述
code int 错误码,当为0时表示请求成功,取值见错误码说明表
msg string 错误描述信息
request_id string API请求链路id
data - 具体响应内容
data.list[0].did int/string 设备id
data.list[0].pid string 产品id
data.list[0].access_pt int 接入协议,取值见接入协议取值说明表
data.list[0].data_pt int 数据协议,取值见数据协议取值说明表
data.list[0].name string 设备名称
data.list[0].desc string 设备描述
data.list[0].status int 设备状态,0-离线,1-在线,2-未激活
data.list[0].create_time datetime 设备创建时间
data.list[0].activate_time datetime 设备激活时间
data.list[0].last_time datetime 设备最后一次在线时间
data.list[0].sec_key string 设备接入鉴权key
data.list[0].imei string LwM2M设备imei
data.list[0].imsi string LwM2M设备imsi
data.list[0].psk string LwM2M设备psk
data.list[0].auth_code string LwM2M设备auth_code
data.list[0].intelligent_way int 产品智能化方式,1-设备接入、2-产品智能化
data.list[0].group_id string 设备分组id
data.list[0].enable_status bool 设备启用状态
data.list[0].lon string 经度
data.list[0].lat string 纬度
data.list[0].obsv bool 设备资源自动订阅是否启用
data.list[0].obsv_st bool 设备资源自动订阅状态
data.list[0].private bool 设备私密性
data.list[0].imsi_old string-array 设备imsi历史变更记录
data.list[0].imsi_mt datetime 设备imsi最近一次修改时间
data.list[0].viot_device_sn string 移动视联网设备返回唯一标识
data.list[0].viot_protocol int 移动视联网设备返回接入协议
1-GB28181协议
2-千里眼协议
data.offset int 查询起始下标
data.limit int 单次查询数量限额
示例
请求示例:
GET https://iot-api.heclouds.com/device/list?product_id=43770&device_name=&offset=0&limit=10
响应示例:
{
"code": 0,
"data":{
"list":[{
"did": 500006387,
"pid": "43770",
"access_pt": 4, //2-MQTT,4-LwM2M
"data_pt": 2,
"name": "nb4",
"desc": "",
"auth_info": {
"177393918128741": "222222"
},
"status": 2,//0-离线;1-在线;2-未激活
"create_time": "2022-07-13T09:19:53.873+08:00",
"activate_time": "0001-01-01T08:00:00+08:00",
"last_connect_time": "0001-01-01T00:00:00Z",
"imsi": "222222",
"imei": "177393918128741",
"psk": "BpLnfgDsc3WD9F3q",
"group_id": "",
"enable_status": true,
"Lat": "29.500816495765097",
"Lon": "106.69984891483458",
"auth_code": "",
"sec_key": "TmZISzZhOTVqakprd3pEa2gwaDNmaGZVVnVTMGpaOXU=",
"chip": 0,
"obsv": true,
"obsv_st": false,
"private": false,
"imsi_old": [],
"imsi_mt": "0001-01-01T08:00:00+08:00",
"intelligent_way": 1
}],
"limit":10,
"offset":0
}
"msg": "succ",
"requestId": "a25087f46dfddb69b29e90ef0acfd115"
}
+70
View File
@@ -0,0 +1,70 @@
1.鉴权算法,我的userId:459810,appkey:3BeJti9supdvX4K+n/98Osx7Zmadd4ze9qR+EfXAfoQWiMXvqksrU0VDUZa7tDUQ
Java代码示例
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;
public class Token {
public static String assembleToken(String version, String resourceName, String expirationTime, String signatureMethod, String accessKey)
throws UnsupportedEncodingException, NoSuchAlgorithmException, InvalidKeyException {
StringBuilder sb = new StringBuilder();
String res = URLEncoder.encode(resourceName, "UTF-8");
String sig = URLEncoder.encode(generatorSignature(version, resourceName, expirationTime, accessKey, signatureMethod), "UTF-8");
sb.append("version=")
.append(version)
.append("&res=")
.append(res)
.append("&et=")
.append(expirationTime)
.append("&method=")
.append(signatureMethod)
.append("&sign=")
.append(sig);
return sb.toString();
}
public static String generatorSignature(String version, String resourceName, String expirationTime, String accessKey, String signatureMethod)
throws NoSuchAlgorithmException, InvalidKeyException {
String encryptText = expirationTime + "\n" + signatureMethod + "\n" + resourceName + "\n" + version;
String signature;
byte[] bytes = HmacEncrypt(encryptText, accessKey, signatureMethod);
signature = Base64.getEncoder().encodeToString(bytes);
return signature;
}
public static byte[] HmacEncrypt(String data, String key, String signatureMethod)
throws NoSuchAlgorithmException, InvalidKeyException {
//根据给定的字节数组构造一个密钥,第二参数指定一个密钥算法的名称
SecretKeySpec signinKey = null;
signinKey = new SecretKeySpec(Base64.getDecoder().decode(key),
"Hmac" + signatureMethod.toUpperCase());
//生成一个指定 Mac 算法 的 Mac 对象
Mac mac = null;
mac = Mac.getInstance("Hmac" + signatureMethod.toUpperCase());
//用给定密钥初始化 Mac 对象
mac.init(signinKey);
//完成 Mac 操作
return mac.doFinal(data.getBytes());
}
public enum SignatureMethod {
SHA1, MD5, SHA256;
}
public static void main(String[] args) throws UnsupportedEncodingException, NoSuchAlgorithmException, InvalidKeyException {
String version = "2022-05-01";
String resourceName = "userid/12321";
//用户自定义token过期时间
String expirationTime = System.currentTimeMillis() / 1000 + 3600 + "";
String signatureMethod = SignatureMethod.SHA1.name().toLowerCase();
String accessKey = "KuF3NT/jUBJ62LNBB/A8XZA9CqS3Cu79B/ABmfA1UCw=";
String token = assembleToken(version, resourceName, expirationTime, signatureMethod, accessKey);
System.out.println("Authorization:" + token);
}
}