Skip to content
在线演示下载安装包

第 20 章 OpenAPI 客户端 ​

本章面向平台管理员与集成对接负责人。所有操作都在「OpenAPI 客户端」页完成,菜单路径:左侧菜单「OpenAPI 客户端」,路由 /#/gb28181/openapi-client。 本章涉及密钥与授权,属高危配置:每一个破坏性操作都给出确认框原文与影响面,请逐条对照后再点。

20.1 功能说明 ​

OpenAPI 客户端是给第三方系统发的一张「门禁卡」。第三方不必使用本平台的账号密码,而是拿一对密钥(AK/SK)调用平台开放出去的能力,例如查询设备列表、查询通道状态、按需点播。

平台对这张卡设了三道约束,缺一不可:

约束在哪配作用
数据范围新建客户端时选定,之后不可改决定这个客户端能看到哪个部门的设备(本部门/本部门及以下)
能力授权详情页「能力授权」逐项开关决定这个客户端能调用哪些接口;新建后默认为空,必须显式授权
调用与观看限制新建客户端时设定每秒调用次数、突发容量、同时观看路数,防止第三方把平台打满

三者是与关系:数据范围管「哪批设备」,能力授权管「哪些动作」,限速配额管「多快、多少路」。任何一项为「无」,对应请求就会被拒。

注意 - 本页只管「客户端凭据与授权」,不负责网络可达性、证书、防火墙。第三方连不上时先确认网络与地址,再回来看本章。 - AK 是公开标识,可以出现在日志里;SK 是密码,只能展示一次,平台不保存明文,遗失只能轮换(见 20.5)。

20.2 页面结构 ​

OpenAPI 功能由一个列表页 + 一个详情页 + 三个弹窗组成。

界面打开方式用途
客户端列表左侧菜单「OpenAPI 客户端」检索、新建、对单个客户端做凭据与状态管理
客户端概览弹窗列表行操作「概览」只读查看一个客户端的全部登记信息
新建客户端弹窗列表右上「新建客户端」登记名称、归属部门、数据范围、限制、负责人
一次性密钥弹窗创建成功/轮换成功后自动弹出唯一一次显示 SK 的窗口
客户端详情页行操作「配置能力」「调用记录」能力授权、调用记录两块内容

列表页自上而下:检索区 → 表格 → 分页。检索区左侧三个筛选控件,右侧「查询」「重置」,最右一组是「刷新」与「新建客户端」。

界面如图 20-1 所示。

图 20-1 OpenAPI 客户端列表

图 20-1 OpenAPI 客户端列表

20.3 检索 ​

控件类型说明
「归属部门」部门树选择,可清空、可搜索选中某个部门后只显示归属该部门的客户端
「客户端名称」文本框,可清空按名称过滤
「客户端状态」下拉,选项:启用/停用/已撤销按认证状态过滤
按钮点了会怎样
「查询」回到第 1 页,带上当前三个条件重新取数;结果为空时表格显示「暂无 OpenAPI 客户端」
「重置」清空三个条件并回到第 1 页重新取数
「刷新」(圆形箭头图标,悬浮提示「刷新 OpenAPI 客户端」)保持当前条件与页码,只重新取一次数。用于别人刚改过数据时同步

回车键在「客户端名称」框内等同点击「查询」。

20.4 表格列 ​

列内容读法
「客户端」第一行客户端名称,第二行灰色等宽字体的 AKAK 是给对接方核对身份用的,不是密码
「归属部门与数据范围」部门名称 + 一个小标签(「本部门」或「本部门及以下」)这个客户端能摸到的设备边界
「负责人」第一行「组织 / 公司名称」,第二行「姓名 · 联系方式」未填组织名显示 -;只填了联系方式时姓名位显示「未填写姓名」
「调用 / 观看限制」第一行「{每秒次数} / 秒 · 突发 {次数}」,第二行「观看 {路数} 路并发」与新建时填的一致
「认证状态」彩色标签「启用」(绿)/「停用」(橙)/「已撤销」(红)决定这个客户端此刻能不能认证
「密钥版本」整数每轮换一次 SK 加 1。对接方报「密钥失效」时,用这个数字快速确认是不是我方轮换过
「操作」7 个动作,按状态显示其中一部分见 20.5

分页在表格下方,可切换每页条数;翻页会保留当前筛选条件。

20.5 行操作 ​

行操作从左到右固定为「概览」「配置能力」「调用记录」,其后三个是状态相关动作,按当前状态出现:

动作何时出现点了会怎样
「概览」(眼睛图标)始终出现打开「客户端概览」弹窗,只读展示 12 项登记信息
「配置能力」(盾牌勾图标)始终出现跳到详情页的能力授权区域
「调用记录」(卷轴图标)始终出现跳到详情页的调用记录区域
「轮换 SK」(钥匙图标)状态不是「已撤销」时出现先弹确认框,确认后作废旧 SK 并弹一次性密钥窗
「停用」(盾牌关闭图标)状态为「启用」时出现先弹确认框,确认后立即阻断新请求
「启用」(圆形勾图标)状态为「停用」时出现先弹确认框,确认后恢复认证
「撤销」(禁止图标)状态不是「已撤销」时出现先弹确认框,确认后进入不可恢复状态

各动作的二次确认原文与结果提示:

动作确认框标题确认框正文确认按钮成功提示
轮换 SK「轮换 OpenAPI 客户端 SK」「轮换会立即使旧 SK 失效,新的 SK 只展示一次。确认继续吗?」「确认轮换 SK」「SK 已轮换,请安全保存新的密钥」
停用「停用 OpenAPI 客户端」「停用会立即阻止新请求;观看连接清退由服务端异步处理。」「确认停用」(危险色)「客户端认证已停用,清退进度另行确认」
启用「启用 OpenAPI 客户端」「启用不会恢复旧的播放授权,请确认客户端仍属于有效部门。」「确认启用」「客户端已启用」
撤销「撤销 OpenAPI 客户端」「撤销不可恢复,认证会立即失败;观看连接清退需以服务端进度确认,不会自动误伤其他客户端。」「确认撤销」(危险色)「客户端已撤销,清退进度另行确认」

注意 - 轮换 SK 是立即失效:确认的一瞬间旧 SK 就不能用了。若对接方正在跑批处理任务,先约好切换窗口再点。 - 停用不等于断开正在看的视频。停用只拦「新请求」,已经建立的观看连接由服务端异步清退,因此出现「已停用但仍能看到画面几十秒」属正常。 - 撤销不可逆。撤销后该行不再出现「轮换 SK」「停用」「撤销」,只剩「概览」「配置能力」「调用记录」。如确需继续使用,只能按 20.7 重新建一个客户端并重做授权。

冲突与失败 - 两位管理员同时改同一个客户端时,后提交的一方会收到「客户端状态已变化,列表已刷新,请重新确认后操作。」,此时列表已自动刷新为最新状态,按新状态重新点一次即可。 - 权限不足时按钮变灰(见下表),强行点击不会发请求。

动作需要的权限码
查看列表、概览gb28181:openapi:client:read
新建客户端gb28181:openapi:client:create
配置能力(能力授权)gb28181:openapi:client:grant
调用记录gb28181:openapi:client:audit(同时还需要 read)
轮换 SKgb28181:openapi:client:rotate
停用/启用/撤销gb28181:openapi:client:status

界面如图 20-4 所示。

图 20-4 客户端概览弹窗

图 20-4 客户端概览弹窗

20.6 状态 ​

客户端只有三种状态,且只能单向推进或回退:

状态标签颜色含义还能做哪些动作
启用绿可以正常认证、可以调用已授权能力、可以观看概览、配置能力、调用记录、轮换 SK、停用、撤销
停用橙认证被拒;已建立的观看连接由服务端异步清退概览、配置能力、调用记录、轮换 SK、启用、撤销
已撤销红终态,认证立即失败、授权不可再改概览、配置能力、调用记录

状态流转:启用 ⇄ 停用(可反复),启用/停用 → 已撤销(单向,不可回)。

注意 - 处「停用」「已撤销」时,详情页的能力授权整体只读,开关、全选、保存按钮全部置灰,并提示「当前客户端状态或账号权限不允许修改能力。」要改授权必须先「启用」。 - 「密钥版本」与「认证状态」是两件独立的事:轮换 SK 不会改变状态;停用状态下的客户端即使拿到新 SK 也无法认证。

20.7 新建客户端 ★ ​

前置条件 ​

  • 账号具备 gb28181:openapi:client:create。
  • 已知这个客户端归属哪个部门、能访问到哪一层设备、给多少限速与并发。归属部门与数据范围创建后不可修改,建错只能重建。

操作步骤 ​

  1. 进入左侧菜单「OpenAPI 客户端」。

  2. 点击右上「新建客户端」,打开「新建 OpenAPI 客户端」对话框(宽 560)。

  3. 填写「客户端名称」,例如 现场集成服务,最多 100 字。建议写成「对接方 + 用途」,便于日后对账。

  4. 选择「归属部门」。可选范围是当前账号可管理的部门,支持输入搜索;下拉为空说明你的账号没有可管理部门,请联系上级分配。

  5. 选择「数据范围」。两个选项下方会实时显示该选项的含义:

    • 「本部门」——「仅访问归属部门的设备,不包含下级部门。」
    • 「本部门及以下」——「访问归属部门及其所有下级部门的设备。」
  6. 在「访问限制」一组里填三个数字(默认 10 / 20 / 10):

字段单位默认值取值范围说明
「调用速度」次 / 秒101–10000 的整数稳态速率上限
「突发容量」次201–10000 的整数允许的瞬时突发,应大于等于调用速度
「观看配额」路并发101–10000 的整数同一时刻允许的观看路数
  1. 可选填「组织 / 公司名称」「负责人姓名」「负责人联系方式」,最多 200 / 100 / 100 字。这三项只用于登记与联系,不影响鉴权;建议至少填联系方式,密钥出问题时能第一时间找到人。

  2. 点击右下「创建并显示一次性 SK」。

结果确认 ​

  • 对话框关闭后弹出「一次性密钥」窗口,同时右上角提示「客户端创建成功,请安全保存一次性 SK」。
  • 列表出现新行,认证状态为「启用」,密钥版本为 1。
  • 详情页头部显示「已授权 0 / N 项」——新建的客户端没有任何能力,必须按 20.9 授权后才可调用。

异常处理 ​

现象原因处理
「创建并显示一次性 SK」是灰的客户端名称为空,或没选归属部门补齐这两项
名称框失焦后红字「请输入客户端名称」只输了空格输入实际名称
部门框失焦后红字「请选择归属部门」未选择选择部门
数字框红字「调用速度需为 1-10000 之间的整数」空值、0、负数、小数或超过 10000改成 1–10000 的整数;三个框的文案分别对应「调用速度」「突发容量」「观看配额」
弹窗顶部红条显示「服务暂不可用,请稍后重试;若持续出现请联系管理员」服务端异常(HTTP 5xx)稍后重试;持续出现请把时间和操作报给管理员
弹窗顶部红条显示「当前账号没有执行该操作的权限」账号缺 create 权限找管理员分配

对话框底部固定有一句说明:「客户端按上方数据范围访问设备,不包含共享可见设备;创建成功后能力默认为空。」这句话解释了两件事:一是共享出去给人看的设备,OpenAPI 看不到;二是能力必须另外授权。

界面如图 20-2 所示。

图 20-2 「新建客户端」弹窗

图 20-2 「新建客户端」弹窗

20.8 一次性密钥 ​

只在这两种时机弹出:新建成功后、轮换成功后。关掉就再也看不到 SK。

窗口内容自上而下:

区域内容
黄色警示条新建时:「SK 只在创建成功后展示这一次。」/轮换时:「轮换后旧 SK 立即失效,新的 SK 只展示这一次。」,后接固定句「关闭窗口后平台无法找回明文 SK,请先将它交给接入方安全保存。」
AK 行左侧「AK」,中间等宽字体的 AK,右侧「复制」按钮
SK 行左侧「SK」,中间橙色等宽字体的 SK,右侧「复制」按钮
按钮组「我已安全保存」;新建时另有主按钮「继续配置能力」
控件点了会怎样
「复制」(AK 行)写入剪贴板并提示「AK已复制」;浏览器不允许写剪贴板时提示「复制失败,请手动复制」
「复制」(SK 行)同上,提示「SK已复制」
「我已安全保存」关闭窗口,回到列表(新建时列表已自动刷新);不打开能力授权
「继续配置能力」(仅新建时出现)关闭窗口并直接跳到该客户端的能力授权页,省去在列表里找一遍

注意 - 这个窗口不能关:没有右上角的叉,按 Esc 无效,点窗外遮罩也无效。只能点两个按钮之一离开,避免误触后永久丢失 SK。 - SK 明文只存在于这一屏。对接方没存下来就只能轮换(20.5),轮换会让对方的旧配置立刻失效。 - 复制走的是浏览器剪贴板,若平台部署在非 HTTPS 环境,浏览器可能禁止写入,此时按提示手工选中复制。

界面如图 20-3 所示。

图 20-3 一次性密钥窗口

图 20-3 一次性密钥窗口

20.9 能力授权 ★ ​

能力授权是详情页的主体,也是本功能最容易配错的地方。它的作用是:从平台开放的能力清单里,勾出这个客户端可以调用的那几项。

前置条件 ​

  • 账号具备 gb28181:openapi:client:grant。
  • 客户端状态为「启用」。停用/已撤销时整页只读。
  • 能力目录加载成功。若显示「能力目录暂不可用,授权已锁定」,说明服务端能力清单没取到,此时任何授权操作都不允许,需先解决目录问题(见 20.11)。

页面结构 ​

详情页顶部是摘要卡:左侧「返回客户端列表」、客户端名称 + 状态标签、AK、「数据范围」、「已授权 N / M 项」;右侧「刷新」(圆形箭头图标)。

中部是三栏工作台:

区域内容
顶部工具条搜索框(占位「搜索能力名称、scope 或接口路径」)、风险筛选下拉、「仅看已授权」复选框
左栏「能力分类」「全部能力」+ 每个能力分组,每项右侧显示「已授权数 / 总数」
中栏能力表标题为当前分类名;下方固定说明「能力授权决定客户端可以调用哪些外部 API,实际数据仍受归属部门和数据范围约束。」;右上「本分类全选」复选框;表格
右栏「本次变更」「已授权 N / M 项」、「新增 N 项」、「移除 N 项」、风险告警、「撤销修改」「保存授权」

工具条与筛选 ​

控件作用
搜索框同时匹配能力名称、描述、scope、接口路径、请求方法、协议版本、标准依据;支持清空
风险筛选选项:全部风险/只读/媒体/控制/破坏性/风险未知。用于只看高危项
「仅看已授权」勾上后表格只留已开启的能力,方便复核

三个条件同时生效(与关系)。筛完没有结果时表格显示「没有符合当前筛选条件的能力」。

能力表 ​

列内容说明
「能力」能力名称(粗体)+ 描述 + 「协议版本:…」+「标准依据:…」描述缺失时显示「服务端尚未提供描述。」;协议版本会补全成 GB/T 28181-2022 形式
「Scope」等宽字体的能力标识就是授权项的唯一键,排障时对日志用
「接口」请求方法标签 + 外部接口路径对接方文档里写的就是这个路径
「风险」彩色标签:只读(绿)、媒体(橙)、控制(红)、破坏性(红)、风险未知(灰)标签下方可能追加「要求 Idempotency-Key」/「支持 Idempotency-Key」/「幂等策略未知」,以及红字「调用时必须提交 confirmed=true」
「授权」开关(固定在右侧)开=允许调用,关=禁止

风险等级是选授权时的核心依据:

风险含义建议
只读只查询,不改状态按需放行
媒体取流、点播、抓图一类,占带宽与并发与「观看配额」一起评估
控制会改设备状态,如云台、布防只给确实需要控制的对接方
破坏性可能造成不可逆的数据或设备状态变化默认不给;给了要在变更单上留痕
风险未知服务端未标注风险先核实再授权

操作步骤 ​

  1. 在列表页对目标客户端点「配置能力」,进入详情页的能力授权区。
  2. 左栏选择能力分类(默认「全部能力」)。每个分类后面跟着「已授权数 / 总数」,可先看哪一类还是 0。
  3. 用搜索框定位具体能力,或用风险筛选把「破坏性」「控制」类单独挑出来复核。
  4. 逐行拨动「授权」开关。开关拨动只是改草稿,不会立刻生效,右栏「本次变更」会实时累计。
  5. 需要整类开通时,勾中栏右上「本分类全选」。该复选框在本类已全选时是勾选态,部分选中时是半选态。
  6. 检查右栏「本次变更」:
    • 「新增 N 项」逐条列出 + scope;
    • 「移除 N 项」逐条列出 - scope;
    • 出现橙色告警「包含 N 项媒体或控制能力变更,请确认接入方影响。」时,说明这次改动会扩大或收缩取流/控制权限;
    • 出现红色告警「包含 N 项破坏性能力授权变更,调用可能造成不可逆的数据或设备状态变化。」时,必须与对接方书面确认;
    • 出现灰色告警「包含 N 项风险未知的能力;请先核实其风险定义再授权。」时,先别保存。
  7. 点「保存授权」。

结果确认 ​

  • 保存成功后提示「能力授权已更新」,摘要卡的「已授权 N / M 项」刷新为新值,右栏「新增/移除」归零。
  • 重新进入该客户端,开关状态与保存时一致。

按钮可用性 ​

按钮可点条件不可点原因
「撤销修改」草稿与已保存状态不一致时没有任何改动时置灰
「保存授权」有 grant 权限、客户端为「启用」、能力目录已加载、有实际改动、当前不在保存中上述任一不满足即置灰;保存中显示加载态
所有开关同上(不含「有改动」)无 grant 权限或客户端非启用态时全部置灰
「本分类全选」同上同上

异常处理 ​

现象原因处理
底部弹出红条「授权已被其他管理员更新。已重新加载最新版本,请核对本次变更后再保存。」两人同时改同一客户端,你的版本已过期系统已自动重载最新授权并保留你刚才的草稿,核对后重新保存
红条「服务暂不可用,请稍后重试;若持续出现请联系管理员」服务端异常(HTTP 5xx)稍后重试
红条「当前账号没有执行该操作的权限」缺 grant 权限找管理员分配
红条「对象不存在或已被删除,请返回列表刷新」客户端已被别人删除返回列表
空态「能力目录暂不可用,授权已锁定」服务端能力清单未取到点右上「刷新」重试;持续出现请联系管理员
红条「能力目录与运行时不一致,请联系管理员重新发布能力目录」服务端发布的清单与实际运行接口不符必须由管理员处理,不要在这状态下授权

注意 - 「保存授权」是整份覆盖,不是逐项提交:右栏显示的新增与移除会一次性提交,中途关掉页面等于全部放弃。 - 有未保存改动时,页面会拦你:点「返回客户端列表」或其他菜单,弹「放弃未保存修改」→「能力授权尚未保存,放弃本次修改并离开页面?」,按钮为「放弃修改」「留在当前页」;在有页签的场景下切页签,文案是「…放弃本次修改并切换页面?」。直接关浏览器标签页会触发浏览器的离开确认。 - 授权只在保存成功后才生效。改完预览就以为生效,是对接方「403 无权」的最常见原因。

界面如图 20-5 所示。

图 20-5 能力授权区域

图 20-5 能力授权区域

20.10 调用记录 ​

在列表行点「调用记录」进入。用于回答「这个客户端刚才那次调用为什么失败」。

控件说明
结果筛选全部结果/成功/失败;切换后回到第 1 页重新取数
「刷新」(圆形箭头图标)保持条件与页码重新取数
列内容
「时间」调用发生时间,YYYY-MM-DD HH:MM:SS
「能力 / 操作」第一行能力中文名(管理类操作显示「管理操作」),第二行等宽字体的 scope
「资源」资源类型 · 资源标识,缺一项显示 -
「结果」标签,「成功」为绿、「失败」为橙(原始值为 success / 其他)
「原因」失败原因分类,用于快速归类;成功时通常为空
「耗时」毫秒数
「请求 ID」排障时提供给开发人员的唯一标识

分页每页 10 条,可切 20/50/100。未加载过时显示「尚未加载调用记录」,加载完成为空显示「暂无调用记录」。

注意 - 没有 gb28181:openapi:client:audit 权限时,这一块显示「没有调用记录查看权限」,行上的「调用记录」按钮也是灰的。 - 调用记录是事后审计,不是实时日志流。刚发生的调用可能需要刷新一次才出现。

界面如图 20-6 所示。

图 20-6 调用记录

图 20-6 调用记录

20.11 常见问题 ​

现象原因处理
对接方收到 401 认证失败SK 用错、已被轮换、客户端被停用/撤销先看列表的「认证状态」与「密钥版本」:状态不是「启用」→ 按 20.5 启用;密钥版本比对接方记录的大 → 说明轮换过,需重新下发(只能再轮换一次并把新 SK 交给对方)
对接方收到 403 无权该能力没授权,或客户端的数据范围不覆盖目标设备详情页搜该能力看「授权」开关是否为开;再看摘要卡的「数据范围」是否包含目标设备所属部门。共享出去的设备 OpenAPI 一律看不到
对接方被限流/429超过「调用速度」或「突发容量」,或观看路数超过「观看配额」让对接方降低并发或加重试退避;确属业务需要,则由管理员重建客户端并调大配额(限制项创建后不可改)
新建完客户端,接口全返回 403能力授权默认为空按 20.9 授权后重试
想改归属部门或数据范围,找不到编辑入口设计上不允许改只能新建一个客户端,重新授权,再把旧的撤销
能力授权页是灰的、提示「当前客户端状态或账号权限不允许修改能力。」客户端处于「停用」或「已撤销」,或账号没有 grant 权限先启用客户端;确认权限
保存授权后接口仍报无权保存失败但没注意,或有未保存改动就离开了页面回详情页看开关是否仍是打开状态;重新保存一次并确认提示「能力授权已更新」
页面提示「服务暂不可用,请稍后重试;若持续出现请联系管理员」服务端异常稍后重试;持续出现把时间点报给管理员,由管理员查服务日志
「概览」里「调用限速」显示 10 / 秒,突发 20,看不懂前者是每秒允许的请求数,后者是允许的瞬时峰值见 20.7 第 6 步的字段说明