觀看條件 - 獨立授權
一、設定資訊
1.1 獨立授權設定資訊
關於獨立授權設定及服務端的處理流程可見幫助中心文件:獨立授權
Interface 介面: AuthSettingItemDirect
| 屬性名 | 說明 | 類型 |
|---|---|---|
authType |
條件類型 | Direct |
enabled |
是否啟用 | null | YN |
directRedirectUri |
授權失敗重新導向 url | string |
二、使用方式
2.1 允許驗證獨立授權
從授權平台跳轉回觀看頁後,透過該方法判斷目前環境下是否允許進行獨立授權簽名驗證。
從 v0.11.0 版本開始,在授權通過,但其他配置是正常的情況下,也允許進行外部授權簽名驗證。另外透過新增 options 參數,開發者可以設定
{ ignoreAuthorized:false }來達到和之前版本一樣的效果
Api 方法: allowToVerifyDirectAuth(signParams: DirectAuthSignParams, options?: Object): Promise<boolean>
參數說明:
- signParams:授權簽名參數,
DirectAuthSignParams類型,必傳,詳細類型說明如下
| 參數名 | 說明 | 類型 | 必須 | 預設值 |
|---|---|---|---|---|
userid |
使用者 id | string |
是 | - |
ts |
時間戳 | string |
是 | - |
sign |
授權簽名 | string |
是 | - |
nickname |
使用者暱稱 | string |
是 | - |
- options:配置項,
Object類型,選傳,詳細類型說明如下
| 參數名 | 說明 | 類型 | 必須 | 預設值 |
|---|---|---|---|---|
ignoreAuthorized |
忽略授權情況,預設 true | boolean |
否 | - |
回傳值說明: 是否允許驗證獨立授權,Promise<boolean> 類型
範例:
import { parse } from '@polyv/utils/querystring';
import { DirectAuthSignParams } from '@polyv/live-watch-sdk';
async function example {
const queryParams = parse(window.location.search.slice(1));
const signParams: DirectAuthSignParams = {
userid: queryParams.userid || '',
ts: queryParams.ts || '',
sign: queryParams.sign || '',
nickname: queryParams.nickname || '',
};
const allowVerify = watchCore.auth.allowToVerifyDirectAuth(signParams);
if (allowVerify) {
// TODO 验证独立授权
}
}
2.2 驗證獨立授權簽名參數
從授權平台跳轉回觀看頁後,透過 verifyDirectAuth 進行外部授權簽名參數驗證,在呼叫前請呼叫 allowToVerifyDirectAuth 判斷簽名參數是否符合要求。
Api 方法: verifyDirectAuth(signParams: DirectAuthSignParams, queryParams: object): Promise<VerifyDirectAuthResult>
參數說明:
- signParams:授權參數,
DirectAuthSignParams類型,必傳,詳細類型說明如下
| 參數名 | 說明 | 類型 | 必須 | 預設值 |
|---|---|---|---|---|
userid |
使用者 id | string |
是 | - |
ts |
時間戳 | string |
是 | - |
sign |
授權簽名 | string |
是 | - |
nickname |
使用者暱稱 | string |
是 | - |
- queryParams:連結參數,
object類型,必傳
回傳值說明: Promise<VerifyDirectAuthResult> 類型
範例:
import { parse } from '@polyv/utils/querystring';
import { ExternalAuthSignParams } from '@polyv/live-watch-sdk';
async function example {
const queryParams = parse(window.location.search.slice(1));
const signParams: ExternalAuthSignParams = {
userid: queryParams.userid || '',
ts: queryParams.ts || '',
sign: queryParams.sign || '',
nickname: queryParams.nickname || '',
};
const allowVerify = watchCore.auth.allowToVerifyDirectAuth(signParams);
if (!allowVerify) {
return;
}
const result = await watchCore.auth.verifyDirectAuth(signParams, queryParams);
if (result.success) {
handleAuthVerifySuccess(result);
} else {
handleAuthVerifyFail(result);
}
}
2.3 允許自動重新導向到獨立授權失敗頁面
當獨立授權失敗或沒有觀看頁地址沒有獨立授權簽名參數時,透過 allowAutoRedirectDirectAuthFailUrl 方法判斷是否自動跳轉到獨立授權失敗頁面,內部判斷條件如下:
- 觀眾未授權
- 管理後台只設定了獨立授權
Api 方法: allowAutoRedirectDirectAuthFailUrl(): Promise<boolean>
回傳值說明: 是否自動重新導向,Promise<boolean> 類型
範例:
// 验证独立授权失败之后 / 无独立授权签名参数
const allowAutoRedirect = await watchCore.auth.allowAutoRedirectDirectAuthFailUrl();
if (allowAutoRedirect) {
watchCore.auth.redirectDirectAuthFailUrl();
}
2.4 取得獨立授權失敗的地址
Api 方法: getDirectAuthFailUrl(): Promise<DirectAuthFailUrlData>
從 v2.5.0
當獨立授權失敗或沒有觀看頁地址沒有獨立授權簽名參數時,透過該方法取得授權失敗自訂 URL 並進行跳轉 版本開始支援
回傳值說明: 獨立授權失敗地址資訊,Promise<DirectAuthFailUrlData> 類型,詳細類型說明如下
| 屬性名 | 說明 | 類型 |
|---|---|---|
directAuthFailUrl |
獨立授權失敗跳轉地址 | undefined | string |
範例:
document.querySelector('button').addEvenListener('click', async () => {
const data = await watchCore.auth.getDirectAuthFailUrl();
window.location.href = data.directAuthFailUrl;
});
2.5 重新導向到獨立授權失敗地址
Api 方法: redirectDirectAuthFailUrl(): Promise<boolean>
從 v2.5.0 如果不呼叫
getDirectAuthFailUrl取得重新導向地址,開發者可以呼叫redirectDirectAuthFailUrl進行跳轉,透過方法回傳的結果判斷頁面是否被跳轉。 版本開始支援
回傳值說明: 是否重新導向,Promise<boolean> 類型
範例:
const result = await watchCore.auth.redirectDirectAuthFailUrl();
if (result) {
console.log('页面已重定向');
} else {
console.log('重定向失败');
}
