概覽
更新時間:2023-07-21 16:07:01
開發者若不需要保利威 Saas 的觀看條件驗證功能時,可透過保利威 Api 介面產生觀眾登入令牌(以下統稱 登入令牌),令牌驗證通過後即可繞過觀看條件限制進入直播觀看頁,詳細用法請見以下文件:
一、處理流程
1.1 步驟1:取得登入令牌
透過保利威 Api 介面取得觀眾登入令牌,介面文件請見:產生登入令牌。
由於該介面涉及 appSecret 進行參數簽名,建議此步驟由伺服器端產生。
1.2 步驟2:驗證登入令牌
透過步驟1 產生登入令牌後,透過驗證介面驗證登入令牌,驗證通過後從介面回應標頭中取得 x-auth-token,該 token 為觀看頁 SDK 使用的驗證令牌,介面文件請見:驗證登入令牌。
1.3 步驟3:設定 x-auth-token
透過步驟2 取得 x-auth-token 後,可呼叫觀看頁 SDK 核心實例的 setXAuthToken 方法設定令牌。
1.4 步驟4:安裝核心實例
透過步驟3 設定後即可依照正常流程安裝核心實例,請注意關於登入令牌的流程僅在首次安裝前需要,二次安裝則不再需要該流程。
二、範例程式碼
以下為 js 方式的流程範例程式碼:
import { send } from '@just4/ajax/ajax';
import md5 from 'md5';
import { createWatchCore } from '@polv/live-watch-sdk';
/**
* 生成签名
* @param {Object} data 请求参数
* @param {String} secret 签名密钥
* @returns 签名串
*/
function getSign(data, secret) {
let text = '';
const keys = Object.keys(data).sort();
for (const key of keys) {
text += `${key}${data[key]}`;
}
const sign = md5(secret + text + secret);
return sign.toUpperCase();
}
async function example() {
const channelId = '频道号';
// 创建观看页 SDK 核心实例
const watchCore = createWatchCore({
channelId,
});
// 请求数据
const reqData = {
appId: '应用 ID,从管理后台获取',
timestamp: Date.now(),
channelId,
viewerId: '观众 id',
nickname: '观众昵称',
};
// 应用密钥,从管理后台获取,建议获取登录令牌流程在服务端中进行,避免将应用密钥直接暴露在 js 中
const appSecret = 'xxxxx';
// 生成签名
const sign = getSign(reqData, appSecret);
reqData.sign = sign;
// 步骤1:通过 ajax 获取登录令牌
const response = await send('//api.polyv.net/live/v3/channel/watch/get-api-token', {
method: 'post',
data: reqData,
});
const result = response.data;
const loginToken = result.data.token;
// 步骤2:验证登录令牌
const res = await send('//watch-api.polyv.cn/v3/common/auth/api-auth/viewer/set-info', {
method: 'post',
data: {
channelId,
token: loginToken,
},
});
// 从响应头中获取 x-auth-token
const xAuthToken = res.xhr.getResponseHeader('x-auth-token');
if (!xAuthToken) {
throw new Error('获取失败,响应头中没有 x-auth-token')
}
// 步骤3:设置 x-auth-token
watchCore.setXAuthToken(xAuthToken);
// 步骤4:安装核心实例
await watchCore.setup();
}
三、時序圖
關於登入令牌的流程圖如下:

