觀眾用戶體系獨立授權
更新時間: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進入觀看頁時,較早登入的觀眾會被後面登入的觀眾踢出,觀看頁會提示「帳號在另外的地方登入,您將被退出觀看。如下圖:

