保利威文档中心

幫助中心

觀眾用戶體系獨立授權

更新時間: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、管理後台》用戶》用戶列表 外部用戶資訊管理

線上API呼叫

請求參數描述

參數名 必選 類型 說明
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進入觀看頁時,較早登入的觀眾會被後面登入的觀眾踢出,觀看頁會提示「帳號在另外的地方登入,您將被退出觀看。如下圖:

联系客服,在线咨询