一、功能路径
我的直播
--> 频道设置
-->观看条件设置
-->自定义授权
二、功能介绍
打开直播观看页时,直播系统会调用客户系统的验证接口,客户自定义验证逻辑,验证通过后才能打开保利威视直播观看页,并且接口返回的观众账号具有唯一性,即同一个账号不能在两个地方同时登录,较早登录的账号会被踢出。
- Secretkey:用于校验签名的生成。
- 自定义URL:用于自定义授权验证的API接口。
三、自定义授权流程详解
- 在自定义URL处填写用户的授权验证API接口,需要完整的不带参数的url地址(不能是localhost等本地服务器地址,且不能带 ? 号),如:http://myWebsite.com/auth。
- 直播系统会将id(直播的频道)、ts(当前时间的毫秒级时间戳)、sign(用于校验的签名)、url(回调的url地址)等参数提交给用户自定义的API接口,用户需要对字符串secretkey + id + secretkey + ts进行MD5加密后与sign参数的值做比较判断是否合法。
- 通过校验和自定义验证逻辑后,客户系统将userid(学员唯一标识,仅支持英文大小写、数字和下划线)、nickname(昵称)、avatar(头像)、actor(用户头衔名称,非必须)、actorFColor(用户头衔字体颜色,非必须,请使用CSS Hex值带#号)、actorBgColor(用户头衔背景颜色,非必须,请使用CSS Hex值带#号)、ts(当前时间的毫秒级时间戳)、sign(校验签名)等参数提交到回调的url接口。
- 直播系统会对签名做校验后判断是否允许学员观看.校验通过后将进入直播观看页,聊天区域将显示观众的昵称和头像。一次成功请求后,该链接将失效。
流程图如下
四、参数说明
五、代码示例(PHP)
<?php
$secretkey = "jlw42byyJ6"; //后台secretKey,在自定义授权地址设置页面
$id = $_GET["id"]; //直播的频道id
$ts = $_GET["ts"]; //当前时间
$sign = $_GET["sign"]; //用于检验的签名
$url = $_GET["url"]; //回调的url
$md5 = md5($secretkey . $id . $secretkey . $ts); //若md5字符串与sign不符合,则不做任何处理
if (!($sign == $md5)) {
return;
}
$userid = "eciyhturt8"; //学员唯一标识
$nickname = urlencode(base64_encode("保利威")); //学员的昵称
$marqueeName = urlencode(base64_encode("polyv")); //自定义跑马灯内容
$avatar = "http://live.polyv.net/assets/images/avatars/9avatar.jpg"; //学员的头像
$callbackTs = time() * 1000; //当前的系统时间
$callbackSign = md5($secretkey . $id . $secretkey . $callbackTs . $secretkey . $userid); //用于检验的签名
$callbackUrl = $url . "?userid=" . $userid . "&nickname=" . $nickname . "&marqueeName=" . $marqueeName. "&avatar=" . $avatar . "&ts=" . $callbackTs . "&sign=" . $callbackSign; //新的直播页面url
//打开新的直播页面url
echo "<script language='javascript' type='text/javascript'>location.href='" . $callbackUrl . "'</script>"
?>
六、展示效果
http://live.polyv.cn/watch/104400
七、注意事项
-
要保证自定义验证接口返回的userid的唯一性,当多个观众使用同一个userid进入观看页时,较早登录的观众会被后面登录的观众踢出,观看页会提示 "帐号在另外的地方登录,您将被退出观看。"如下图:
-
学员的昵称进行base64加密后再进行urlencode加密,否则可能会造成观看页昵称显示乱码现象。
- 学员的昵称不能为空,否则保利威系统会取默认昵称 xxx观众/数字