与腾讯云后台通讯


您的服务器与腾讯云服务器的信息同步可以通过两种方式组合实现:
API 调用:腾讯云提供了直播相关的 API 接口,包括状态查询和状态管理等功能,供您的后台服务器调用。
消息通知:腾讯云在直播流状态变更、录制文件生成等一系列事件发生时,能够以事件消息(JSON)的形式主动通知您的后台服务器,只需要您在腾讯云注册接收事件通知的回调 URL 即可实现。
API 调用
调用方法
在您的服务端采用 HTTP 协议的 GET 请求方式(即调用参数直接拼接在 URL 中)进行调用即可,详细的调用方法在每个 API 的说明文档中都有示例参考。
安全机制
由于对 API 的调用采用的是普通的 HTTP 协议(出于性能考虑),这就需要一套行之有效的办法来确保您的服务器与腾讯云后台之间的通讯安全。
所有直播码相关的云端 API 都采用了同一种安全检查机制,t + sign 校验:
t(过期时间):如果一个 API 请求或者通知中的 t 值所规定的时间已经过期,则可以判定这个请求或者通知为无效的,这样做可以防止网络重复攻击。t 的格式为 UNIX 时间戳,即从1970年01月01日(UTC/GMT 的午夜)开始所经过的秒数。
sign(安全签名):sign = MD5(key + t),即把加密 key 和 t 进行字符串拼接后,计算一下 md5 值。这里的 key 即 CGI 调用 key,您在腾讯云直播管理控制台 域名管理 中可以进行设置,以推流配置为例步骤如下:
1.1 进入 域名管理 单击推流域名后面的 管理 。


1.2 选择 推流配置,查看 鉴权配置 标签,单击 编辑 进行配置。


说明
安全原理
由于 MD5 是不可逆的 HASH 算法,所以只要确保 KEY 不泄露,即使攻击者拿到很多对 t 和 sign 也无法反算出 KEY 值,进而无法进行伪装攻击。
计算示例
例如,我们现在的时间是2021-07-21 11:46:00,我们希望有效期是1分钟,也就是2021-07-21 11:47:00以后再收到携带这个 t 的请求或者通知即判定为非法的:
t = "2021-07-21 11:47:00" = 1626839220
假设我们的 key 是 5d41402abc4b2a76b9719d911017c592,那么我们计算的签名结果就是:
sign = MD5(5d41402abc4b2a76b9719d911017c5921626839220)= 5ee8ca6c28cbe415b40352969cdf8249
错误码
HTTP 错误
错误码 | 含义 | 备注 |
403 | Forbidden | 接口为了安全考虑开启了校验,若使用浏览器验证发现该错误,可检查下 cookie 里是否含有 skey。 |
404 | Not Found | 查看请求时是否带上 host。 |
接口通用返回错误
错误信息 | 含义 |
appid is invalid | appid 不合法,表示未开通该功能。 |
接口前端接入返回错误信息
接口后端查询返回错误码
错误码 | 错误信息 | 含义 |
0 | query data successfully | 本次查询成功,并返回结果数据。 |
1000 | user is not registered for statapi | 用户没有注册 statapi,请提工单到后台开通。 |
1001 | user service for statapi was stopped | 用户 statapi 访问服务已经被终止。 |
1201 | internel/system error | |
1202 | invalid request/request frequency exceeds limit | 无效的请求,一般是超过了频控次数,如果频率不能满足业务需要,可申请增加次数。 |
1204 | invalid input param | 输入参数错误,请检查下输入的参数是否符合接口规范。 |
1301 | has not live stream | 没有活跃的流,在调用实时接口时会返回该错误码。 |
10003 | query data is empty | 后端查询数据成功,但是返回数据为空。例如,某时间段没有播放,此时调用接口 Get_LivePlayStatHistory 就会返回10003。 |
注意