授權認證
更新時間:2025-02-24 16:47:04
開發者若不需要保利威 Saas 的觀看條件驗證功能時,可透過保利威 Api 介面產生觀眾授權令牌(以下統稱 授權令牌),授權令牌驗證傳入後即可繞過觀看條件限制進入直播觀看頁,詳細用法請見以下文件:
一、處理流程
1.1 步驟1:建立觀看核心實例
請參考 觀看頁SDK-安裝和初始化
1.2 步驟2:取得授權令牌
透過保利威 Api 介面取得觀眾授權令牌,介面文件請見:取得觀看頁 SDK 授權令牌。
由於該介面涉及 appSecret 進行參數簽名,建議此步驟由伺服器端產生。
1.3 步驟3:傳入授權令牌
透過 步驟2 取得授權令牌後,透過核心實例的 setXAuthToken 方法傳入授權令牌。
1.4 步驟4:安裝觀看核心實例
透過 步驟3 傳入令牌後即可根據正常流程安裝核心實例,請注意關於授權令牌的流程僅在首次安裝前需要,二次安裝則不再需要該流程。
二、範例程式碼
以下為 js 方式的流程範例程式碼:
import { send } from '@just4/ajax/ajax';
import md5 from 'md5';
import { createWatchCore } from '@polyv/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();
}
/**
* 获取授权令牌(注:如果在观看页开源UI项目用到此接口,建议把观众信息封装成全局统一,分别传入以下接口和观看页SDK核心实例方法createWatchCore)
* @param {string} channelId
*/
async function getWatchAuthToken({ channelId }) {
// 请求数据
const reqData = {
appId: '应用 id,从管理后台获取', // 必传
timestamp: Date.now(),// 必传
channelId, // '频道ID',// 必传
viewerId: '观众 id',// 建议必传,否则将随机生成
nickname: '观众昵称',// 建议必传,否则将以XX地区观众展示
avatar: '观众头像',// 不传的话,会采用默认头像
actor:'观众头衔', // 不传的话,默认可自动读取频道管理后台的配置
};
// 应用密钥,从管理后台获取,建议获取授权令牌流程在服务端中进行,避免将应用密钥直接暴露在 js 中
const appSecret = 'xxxxx';
// 生成签名
const sign = getSign(reqData, appSecret);
reqData.sign = sign;
// 通过XHR获取授权令牌(注意:开发者如果使用非seed请求方式,post传递的数据格式需要是Form-data)
const response = await send('//api.polyv.net/live/v3/channel/watch/get-watch-api-token', {
method: 'post',
data: reqData,
});
const result = response.data;
return result.data.token;
}
// 示例方法
async function example() {
const channelId = '频道号';
// 步骤1:创建观看核心实例
const watchCore = createWatchCore({ channelId });
// 步骤2:获取授权令牌
const watchAuthToken = await getWatchAuthToken({ channelId });
// 步骤3:传入授权令牌
watchCore.setXAuthToken(watchAuthToken);
// 步骤4:安装观看核心实例
await watchCore.setup();
}
