Appearance
高级授权
说明📖
配置授权页地址,验证成功后才可以进入观看直播(需要具有开发能力)可实现验证观众身份后观看、关注公众号后观看等授权观看形式。
第一步:功能开通,联系客服开通『高级授权』功能。
第二步:在【观看授权】中选择【高级授权】。

第三步:配置授权页地址,验证成功后才可以进入观看直播(需要具有开发能力)可实现验证观众身份后观看、关注公众号后观看等授权等自定义授权观看形式。

授权流程图

第四步:复制密钥,配置完成后,点击『提交』,系统自动生成构造 token 需要的密钥

第五步:生成常规令牌(token)
javascript
//1234
const timestamp = Date.now();
const key = 'secret-key';
const sign = md5(`${timestamp}-${key}`)
const token = `${timestamp}-${sign}`chrome 浏览器开发者工具生成 timestamp 演示:注意需要使用当前时间生成 timestamp ,默认 10 分钟后失效

在线 md5 加密工具生成 key 演示:

Token(令牌)构造:1713286417058-3f76818f507fe7eb6422bd0703c64c88
第六步:生成一次性令牌 (token)
一次性令牌的特点是只能使用一次,并且具有过期时间。生成后请尽快使用,一次性令牌的当前过期时间设定为 10 分钟,未来可能会有所调整,因此不建议过度依赖此时间。一次性令牌的标识是以 O- (大写字母 O 和横线)开头。在生成过程中,还需要使用 10 到 20 位之间的随机字符串(请确保字符串唯一,以避免令牌冲突)来进行混淆。
一次性令牌正则表达式校验规则: ^O-\d{13}-\w{10,20}-[a-f0-9]{32}$
javascript
function randomString(length, chars)
{
chars = chars || 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
let result = '';
for(let i = length; i > 0; --i){
result += chars[Math.floor(Math.random() * chars.length)];
}
return result;
}
const timestamp = Date.now();
const key = '$secret-key';
const nonceStr = randomString(16);
const sign = md5(`O-${timestamp}-${nonceStr}-${key}`);
const token = `O-${timestamp}-${nonceStr}-${sign}`;一次性令牌 (token) 示例:
O-1713134852061-aTSVadLft1KeyPDs-a8f5f167f44f4964e6c998dee827110ca第七步:生成试看令牌
试看令牌是指在相关活动中,用户可以在规定的时间内进行试看。如果观看时间超过了该时长,用户将被重定向到自定义的授权页面进行授权。试看令牌可以分为两种模式:可重复试看和不可重复试看。
说明:
- 可重复试看令牌: 如果是可重复试看令牌,当用户观看超过限制时长后,可以重新进行授权。
- 不可重复试看令牌: 如果是不可重复试看令牌,则用户无法重新授权。
- 授权覆盖规则: 试看令牌可以被一次性令牌或常规令牌覆盖。即,如果用户首先使用试看令牌进行授权,然后又使用常规令牌进行授权,则当前用户的授权方式将变为常规令牌授权。
试看令牌参数说明:
- 标识前缀: 以
TE-(大写字母TE和-)开头进行标识。 - 时间戳:
timestamp单位是毫秒。 - 试用时长:
duration指定用户可以试看的时长,单位为秒。例如,如果用户可以试看 10 分钟,那么duration应设置为 600。 - 重复试看权限:
repeat指示是否允许重复试看,取值为 1 或 0,其中 1 代表允许,0 代表不允许。 - 加密秘钥:
secret是在平台配置自定义授权时生成的用于加密的秘钥。 - 随机字符串:
nonceStr是长度在 10 到 20 位之间的随机字符串(请确保该字符串不重复,以避免令牌冲突)。
javascript
function randomString(length, chars) {
chars = chars || 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
let result = '';
for (let i = length; i > 0; --i) {
result += chars[Math.floor(Math.random() * chars.length)];
}
return result;
}
const timestamp = Date.now();
const duration = 600;
const nonceStr = randomString(15);
const repeat = '1';
const secret = 'YOUR_SECRET_HERE';
const sign = md5(`${timestamp}-${duration}-${repeat}-${secret}-${nonceStr}`);
const token = `TE-${timestamp}-${duration}-${repeat}-${nonceStr}-${sign}`;试看令牌(token)示例:
TE-1713560795067-600-1-3f76818f507fe-757d23590a522bfcd7b323847b9187d4第八步:带上令牌的访问地址
常规令牌: https://tv.feiyaol.com/watch/6136209?token=1713286417058-3f76818f507fe7eb6422bd0703c64c88