三方授权是活动观看限制的一种类型:开启后,由主办方自行决定观众能否观看直播,通过“主办方服务端生成签名、平台校验签名”的方式实现。本文档面向开发者,介绍该能力的接入前提、签名规则、代码示例与联调方法。
app_key 与 secret_key。secret_key 仅由主办方服务端持有,主办方为哪些观众生成签名,即决定了哪些观众可以观看。app_key 和 secret_key。安全 要求: secret_key仅允许保存在主办方服务端,严禁写入网页源码、前端脚本或客户端 App,也不得通过 URL 传递。
auth_sign。| 参数 | 类型 | 说明 |
|---|---|---|
app_key | 字符串 | 开放平台应用标识,须归属于活动所属的主办方账号。 |
auth_ts | 整型 | 生成签名时的 Unix 秒级时间戳(10 位数字),不是毫秒时间戳。 |
webinar_id | 整型 | 当前需要访问的活动 ID。 |
email | 字符串 | 观众邮箱。活动开启三方授权时必填,且必须为合法邮箱。 |
auth_sign | 字符串 | 按第 5 节规则生成的 HMAC-SHA256 签名结果,64 位小写十六进制字符串。该字段本身不参与签名。 |
https://live.example.com/v3/lives/embedclientfull/watch/42?email=alice%40example.com&app_key=app-key&auth_ts=1700000000&auth_sign=9c5b66b43527979012af97bbe6b1818680be874f39c4c4e0ef9bca513bbeed72&nickname=xiaoming参数一致性要求:URL 中 app_key、alice%40example.com再次编码为alice%2540example.com,否则平台解析出的参数值与签名原文不一致,将导致校验失败。
auth_sign = lowercase_hex(HMAC-SHA256(canonical_string, secret_key))secret_key,须使用平台提供的完整原始值,首尾勿带入空白字符app_key、webinar_id、email、auth_ts。各字段处理规则如下:app_key、email:先 trim 去除首尾空白,再按 RFC 3986 进行百分号编码。编码针对原始值,请勿对已编码结果二次编码。webinar_id、auth_ts:以十进制整数直接拼入,无需 trim 或百分号编码;不得包含空格、加号、小数点、科学计数法或前导零。key=value 形式拼接,字段之间用 & 连接。app_key={encoded_app_key}&webinar_id={webinar_id}&email={encoded_email}&auth_ts={auth_ts}| 字段 | 值 |
|---|---|
app_key | app-key |
webinar_id | 42 |
email | alice@example.com |
auth_ts | 1700000000 |
secret_key | secret |
app_key=app-key&webinar_id=42&email=alice%40example.com&auth_ts=17000000009c5b66b43527979012af97bbe6b1818680be874f39c4c4e0ef9bca513bbeed720 <= 平台服务器当前时间 - auth_ts <= 180 秒auth_ts 已超过 3 分钟,同一浏览器仍可正常完成验证。app_key、webinar_id、email、auth_ts 或 auth_sign 任一参数发生变化时,原有的浏览器绑定结果不再适用。app_key 是否存在、是否处于启用状态,以及是否归属于活动所属的主办方账号。| 错误码 | 默认提示(观看页展示文案) | 常见场景 |
|---|---|---|
512627 | 无法观看,主办方设置了验证方式 | 通过普通观看页、SDK 或其他非嵌入入口访问开启了三方授权的活动。 |
512628 | 您不符合观看要求 | 参数缺失、邮箱为空、时间戳无效、应用无效或归属错误、签名错误、签名已绑定其他浏览器等。 |
secret_key。auth_ts 是否为秒级时间戳,而非毫秒时间戳。app_key、email 是否已 trim;整型字段无需 trim。app_key、webinar_id、email、auth_ts。secret_key 拼入签名原文。email 是否可以省略?email 去除首尾空白后必须非空,且必须是合法邮箱地址。secret_key 将面临泄露风险。secret_key 仅保存在服务端email 必填且为合法邮箱app_key、email 已执行 trimauth_ts 使用秒级时间戳