觀看條件 - 自訂授權
一、設定資訊
1.1 自訂授權設定資訊
關於自訂授權設定及服務端的處理流程可見幫助中心文件:自訂授權
Interface 介面: AuthSettingItemCustom
| 屬性名 | 說明 | 類型 |
|---|---|---|
authType |
條件類型 | Custom |
enabled |
是否啟用 | null | YN |
customUri |
自訂 url | string |
customEntryText |
入口文字 | null | string |
二、使用方式
2.1 允許驗證自訂授權
從授權平台跳轉回觀看頁後,透過該方法判斷目前環境下是否允許進行自訂授權簽名驗證。
從 v0.11.0 版本開始,在授權通過,但其他配置是正常的情況下,也允許進行外部授權簽名驗證。另外透過新增 options 參數,開發者可以設定
{ ignoreAuthorized:false }來達到和之前版本一樣的效果
Api 方法: allowToVerifyCustomAuth(signParams: CustomAuthSignParams, options?: Object): Promise<boolean>
參數說明:
- signParams:授權簽名參數,
CustomAuthSignParams類型,必傳,詳細類型說明如下
| 參數名 | 說明 | 類型 | 必須 | 預設值 |
|---|---|---|---|---|
userid |
使用者 id | string |
是 | - |
ts |
時間戳 | string |
是 | - |
sign |
授權簽名 | string |
是 | - |
- options:配置項,
Object類型,選傳,詳細類型說明如下
| 參數名 | 說明 | 類型 | 必須 | 預設值 |
|---|---|---|---|---|
ignoreAuthorized |
忽略授權情況,預設 true | boolean |
否 | - |
回傳值說明: 是否允許驗證自訂授權,Promise<boolean> 類型
範例:
import { parse } from '@polyv/utils/querystring';
import { CustomAuthSignParams } from '@polyv/live-watch-sdk';
async function example {
const queryParams = parse(window.location.search.slice(1));
const signParams: CustomAuthSignParams = {
userid: queryParams.userid || '',
ts: queryParams.ts || '',
sign: queryParams.sign || '',
};
const allowVerify = watchCore.auth.allowToVerifyCustomAuth(signParams);
if (allowVerify) {
// TODO 验证自定义授权
}
}
2.2 驗證自訂授權簽名參數
從授權平台跳轉回觀看頁後,透過 verifyCustomAuth 進行自訂授權參數驗證,在呼叫前請呼叫 allowToVerifyCustomAuth 判斷簽名參數是否符合要求。
Api 方法: verifyCustomAuth(signParams: CustomAuthSignParams, queryParams: object): Promise<VerifyCustomAuthResult>
參數說明:
- signParams:授權參數,
CustomAuthSignParams類型,必傳,詳細類型說明如下
| 參數名 | 說明 | 類型 | 必須 | 預設值 |
|---|---|---|---|---|
userid |
使用者 id | string |
是 | - |
ts |
時間戳 | string |
是 | - |
sign |
授權簽名 | string |
是 | - |
- queryParams:連結參數,
object類型,必傳
回傳值說明: 授權結果,Promise<VerifyCustomAuthResult> 類型
範例:
import { parse } from '@polyv/utils/querystring';
import { CustomAuthSignParams } from '@polyv/live-watch-sdk';
async function example {
const queryParams = parse(window.location.search.slice(1));
const signParams: CustomAuthSignParams = {
userid: queryParams.userid || '',
ts: queryParams.ts || '',
sign: queryParams.sign || '',
};
const allowVerify = watchCore.auth.allowToVerifyCustomAuth(signParams);
if (!allowVerify) {
return;
}
const result = await watchCore.auth.verifyCustomAuth(signParams, queryParams);
if (result.success) {
handleAuthVerifySuccess(result);
} else {
handleAuthVerifyFail(result);
}
}
2.3 允許自動重新導向到自訂授權位址
授權模組提供方法用於在觀眾進入觀看頁,直接重新導向到自訂授權位址,無需經過引導頁,內部判斷條件如下:
- 觀眾未授權
- 管理後台只設定了自訂授權
- 管理後台關閉引導頁開關
Api 方法: allowAutoRedirectCustomAuthUrl(): Promise<boolean>
回傳值說明: 是否自動重新導向,Promise<boolean> 類型
範例:
const allowAutoRedirect = await watchCore.auth.allowAutoRedirectCustomAuthUrl();
// 当前不需要显示引导页,直接跳到自定义授权地址
if (allowAutoRedirect) {
watchCore.auth.redirectCustomAuthUrl();
}
2.4 取得自訂授權的位址
當使用者點擊授權按鈕時,透過該方法取得自訂授權連結並進行跳轉。
Api 方法: getCustomAuthUrl(): Promise<CustomAuthUrlData>
回傳值說明: 自訂授權跳轉位址資訊,Promise<CustomAuthUrlData> 類型,詳細類型說明如下
| 屬性名 | 說明 | 類型 |
|---|---|---|
customAuthUrl |
自訂授權跳轉位址 | string |
範例:
document.querySelector('button').addEvenListener('click', async () => {
const data = await watchCore.auth.getCustomAuthUrl();
window.location.href = data.customAuthUrl;
});
2.5 重新導向到自訂授權位址
如果不呼叫 getCustomAuthUrl 取得授權位址,開發者可以呼叫 redirectCustomAuthUrl 進行跳轉,透過方法回傳的結果判斷頁面是否被跳轉。
Api 方法: redirectCustomAuthUrl(): Promise<boolean>
回傳值說明: 是否重新導向,Promise<boolean> 類型
範例:
const result = await watchCore.auth.redirectCustomAuthUrl();
if (result.success) {
console.log('页面已重定向');
} else {
console.log('重定向失败,原因:', result.failReason);
}
