观众用户体系独立授权
更新时间:2026-08-07 09:49:51
功能介绍
打开直播观看页的时候URL需带上指定的参数,经过直播系统验证请求合法后,直接进入直播观看页,同时将用户所传参数作为观看页的观众信息进行设置,要求接口返回的观众账号具有唯一性,即同一个账号不能在两个地方同时登录,较早登录的账号会被踢出。
1、Secretkey:用于校验签名的生成。(管理后台》开发设置》开发者信息中的appSecret)
独立授权流程详解
1、开启观众用户体系功能,在管理后台获取到开发者信息中的appSecret。
2、在请求保利威直播观看页时需带上相关参数,如:https://live.polyv.cn/watch/1965681?externalViewerId=1b448be323&ts=1498547407000&sign=dd9dc9e42ad7c0204398e925a4ee0f46&nickname=viewerTests
3、直播系统会对用户提交的sign参数的值做比较判断是否合法,一次成功请求后,该链接将失效(sign只能成功使用一次),如果合法,直播系统将使用nickname、externalViewerId、进入到保利威视直播观看页聊天区将显示学员的昵称。如果验证失败,则显示错误页面。
4、管理后台》用户》用户列表 外部用户信息管理
请求参数描述
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| externalViewerId | true | String | 观众id,重复id时先登录的观众会被踢出直播间【仅支持英文大小写、数字和下划线,长度最大64位字符,超出64位的部分将被截取不做记录】。 |
| ts | true | Long | 当前13位毫秒级时间戳,3分钟内有效 |
| sign | true | String | 用于校验的签名,生成规则是secretkey + externalViewerId + secretkey + ts进行MD5加密 |
| nickname | true | String | 观众昵称,需要进行url安全的base64编码 |
| avatar | false | String | 观众头像的url地址 |
| param4 | false | String | 统计观众观看日志的自定义参数,需要先进行base64加密后再进行urlencode |
| param5 | false | String | 统计观众观看日志的自定义参数,需要先进行base64加密后再进行urlencode |
| forceUserAuth | false | String | Y/N,Y:重新做独立授权,更新观众信息。默认:N |
代码示例(Java)
//TODO 设置为独立授权的SecretKey
private static final String DIRECT_SECRET_KEY = "******";
public static void main(String[] args) throws UnsupportedEncodingException, NoSuchAlgorithmException {
String url = "https://live.polyv.cn/watch/";
//TODO 设置为独立授权的频道号
String channelId = "2292421";
//TODO 设置观众id,同一个观众id,后面进入的会把前面的观众挤出频道
String externalViewerId = "sadboy";
String ts = String.valueOf(System.currentTimeMillis());
//url安全的base64编码
String nickname = "保利威";
nickname = new String(org.apache.commons.codec.binary.Base64.encodeBase64URLSafe(nickname.getBytes(StandardCharsets.UTF_8)), StandardCharsets.UTF_8);
String avatar = "http://live.polyv.net/assets/images/avatars/9avatar.jpg";
String sign = DIRECT_SECRET_KEY+externalViewerId+DIRECT_SECRET_KEY+ts;
sign = LiveSignUtil.md5Hex(sign);
url += channelId+"?externalViewerId="+externalViewerId+"&ts="+ts+"&sign="+sign+"&nickname="+nickname+"&avatar="+avatar;
//浏览器直接访问url即可进入直播间
System.out.println(url);
}
代码示例(PHP)
<?php
$secretkey = "qwertyui"; //后台secretKey
$externalViewerId = "test" . rand(0, 5); //直播的用户ID
$ts = time() * 1000; //当前时间
$sign = md5($secretkey . $externalViewerId . $secretkey . $ts); //用于校验的sign
$nickname = urlencode(base64_encode("保利威")); //学员的昵称
$avatar = "http://live.polyv.net/assets/images/avatars/9avatar.jpg"; //学员的头像
$url = "https://live.polyv.cn/watch/108008";
$callbackUrl = $url . "?externalViewerId=" . $externalViewerId . "&nickname=" . $nickname . "&avatar=" . $avatar . "&ts=" . $ts . "&sign=" . $sign;
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>login</title>
</head>
<body>
<div id="btn">
<input type="button" onclick="openurl()" value="独立授权观看" class="btn" >
</div>
<script>
function openurl(){
location.href="<?php
echo $callbackUrl ?>";
};
</script>
</form>
</body>
</html>
注意事项
1、要保证提交的userid的唯一性,当多个观众使用同一个userid进入观看页时,较早登录的观众会被后面登录的观众踢出,观看页会提示 "帐号在另外的地方登录,您将被退出观看。如下图:

