觀看條件模組
更新時間:2025-10-23 13:53:34
观看条件模块(auth) 主要負責觀看條件授權,觀眾進入直播觀看頁前需要進行觀看條件授權,開發者可透過 watchCore.auth.isAuthorized 方法取得觀眾的授權情況:
- 未授權:顯示引導/授權頁進行授權,授權後重新
watchCore.setup觀看頁核心實例並呼叫watchCore.connect連線聊天室,連線成功後顯示直播觀看頁。 - 已授權:直接呼叫
watchCore.connect連線聊天室,連線成功後顯示直播觀看頁。
示例如下:
// 观众未进行观看条件授权
if (!watchCore.auth.isAuthorized()) {
// TODO:显示引导/授权页
// 观众点击观看页入口或执行观看条件授权,如:无条件授权
const result = await watchCore.auth.verifyNoneAuth();
if (!result.success) {
console.error('授权失败了!!', result.failReason);
return;
}
// 当观众执行观看条件授权成功,需要重新安装 watchCore
await watchCore.setup();
}
// 当完成观看条件授权后,即可连接聊天室进入直播观看页
await watchCore.connect();
// TODO:连接成功,显示直播观看页
關於各觀看條件的說明請見本模組的開發文件。
一、觀看條件類型
Enum 列舉: AuthType
| 常數 | 列舉成員 | 說明 | 設定資訊 |
|---|---|---|---|
'none' |
AuthType.None |
無條件觀看/公開觀看 | AuthSettingItemNone |
'pay' |
AuthType.Pay |
付費觀看 | AuthSettingItemPay |
'phone' |
AuthType.Phone |
白名單觀看 | AuthSettingItemPhone |
'info' |
AuthType.Info |
登記觀看 | AuthSettingItemInfo |
'code' |
AuthType.Code |
驗證碼觀看 | AuthSettingItemCode |
'custom' |
AuthType.Custom |
自訂授權 | AuthSettingItemCustom |
'external' |
AuthType.External |
外部授權 | AuthSettingItemExternal |
'direct' |
AuthType.Direct |
獨立授權 | AuthSettingItemDirect |
'enterpriseWeChat' |
AuthType.EnterpriseWeChat |
企業微信授權 | AuthSettingItemEnterpriseWeChat |
'inviteWatch' |
AuthType.InviteWatch |
邀請觀看 | AuthSettingItemInviteWatch |
二、使用方式
2.1 取得觀看條件設定列表
各觀看條件的設定說明可見對應的文件。
- 當後台未開啟觀看限制,設定列表回傳 [無條件授權]
- 當後台開啟觀看限制,設定列表回傳 [主要觀看條件, 次要觀看條件]
Api 方法: getAuthSettings(): AuthSettingItem[]
回傳值說明: 觀看條件設定列表,AuthSettingItem[] 類型
範例:
const authSettings = watchCore.auth.getAuthSettings();
authSettings.forEach(settingItem => {
console.log('设置类型信息', settingItem);
console.log('设置类型', settingItem.authType);
});
2.2 判斷目前使用者是否已進行觀看條件授權
Api 方法: isAuthorized(): boolean
回傳值說明: 是否完成授權
範例:
const isAuthorized = watchCore.auth.isAuthorized();
if (isAuthorized) {
console.log('观众已进行观看条件授权,进入观看页');
} else {
console.log('观众未进行观看条件授权,进入引导页进行授权');
}
三、驗證觀看條件
觀看頁 SDK 提供每個觀看條件的驗證 API,開發者可根據相應的 API 進行觀看條件的驗證,當驗證成功後即可顯示直播觀看頁。
3.1 執行一次觀看條件驗證
所有觀看條件的驗證方法無論驗證成功是否通過,Promise 均會回傳驗證結果 result,其類型為 AuthVerifyResult,當 result.success 為 true 時表示觀看條件驗證成功,false 時表示驗證失敗,具體失敗可見 觀看條件驗證失敗處理
程式碼示例如下:
/**
* 验证白名单观看
* @param phone 白名单
*/
async function verifyPhoneAuth(phone) {
const result = await watchCore.auth.verifyPhoneAuth({
phone,
});
if (result.success) {
// 验证成功
handleAuthVerifySuccess(result);
} else {
// 验证失败
handleAuthVerifyFail(result);
}
}
/**
* 统一处理验证观看条件成功
*/
async function handleAuthVerifySuccess(successResult) {
if (!successResult.success) {
return;
}
// 重新安装观看页
await watchCore.setup();
console.log(watchCore.auth.isAuthorized()); // 此时返回 true
console.log('验证成功,进入观看页');
}
AuthVerifyResult 類型
/** 观看条件验证结果 */
type AuthVerifyResult<T extends AuthType> = AuthVerifyResultSuccess<T> | AuthVerifyResultFail<T>;
/** 观看条件验证结果(成功) */
interface AuthVerifyResultSuccess<T extends AuthType = AuthType> {
/** 观看条件类型 */
authType: T;
/** 成功状态 */
success: true;
}
/** 观看条件验证结果(失败) */
interface AuthVerifyResultFail<T extends AuthType = AuthType> {
/** 观看条件类型 */
authType: T;
/** 成功状态 */
success: false;
/** 失败原因 */
failReason: AuthVerifyError;
/** 失败信息 */
failMessage?: string;
/** 获取重定向跳转地址 */
getRedirectUrl?: () => string;
}
3.2 驗證失敗處理
當觀看條件驗證失敗時(即 result.success 為 false),可透過 result.failReason 取得驗證失敗原因,然後在頁面進行錯誤類提示等其他處理,該欄位類型為 AuthVerifyError 列舉,範例程式碼如下:
/**
* 处理观看条件失败
* @param failResult 失败结果
*/
function handleAuthVerifyFail(failResult) {
switch (failResult.failReason) {
// 未知原因
case AuthVerifyError.Unknow:
toast.error('验证失败:未知原因');
break;
// 白名单不存在
case AuthVerifyError.PhoneNotExist:
toast.error('验证失败:白名单不存在');
break;
// 需要重定向
case AuthVerifyError.RedirectUrl:
if (failResult.getRedirectUrl) {
const redirectUrl = failResult.getRedirectUrl();
toast.error('验证失败,需要重定向', redirectUrl);
}
break;
// ...其他错误处理
}
}
3.3 觀看條件驗證失敗原因
Enum 列舉: AuthVerifyError
| 常數 | 列舉成員 | 說明 | 場景 |
|---|---|---|---|
'Unknown' |
AuthVerifyError.Unknown |
未知錯誤 | 通用 |
'RedirectUrl' |
AuthVerifyError.RedirectUrl |
需要重新導向 | 通用 |
'ImageCodeError' |
AuthVerifyError.ImageCodeError |
圖形驗證碼錯誤 | 通用 |
'SystemException' |
AuthVerifyError.SystemException |
系統異常 | 通用 |
'InvalidWatchAuth' |
AuthVerifyError.InvalidWatchAuth |
非法觀看條件 | 通用 |
'PhoneEmpty' |
AuthVerifyError.PhoneEmpty |
白名單會員碼為空 | 白名單觀看 |
'PhoneUsed' |
AuthVerifyError.PhoneUsed |
白名單會員碼已使用 | 白名單觀看 |
'PhoneNotExist' |
AuthVerifyError.PhoneNotExist |
白名單會員碼不存在 | 白名單觀看 |
'SmsCodeError' |
AuthVerifyError.SmsCodeError |
簡訊驗證碼錯誤 | 登記觀看 |
'PhoneNotRegister' |
AuthVerifyError.PhoneNotRegister |
手機號碼未登記 | 登記觀看 |
'CodeEmpty' |
AuthVerifyError.CodeEmpty |
觀看驗證碼為空 | 驗證碼觀看 |
'CodeError' |
AuthVerifyError.CodeError |
觀看驗證碼錯誤 | 驗證碼觀看 |
'CodeNeedVerify' |
AuthVerifyError.CodeNeedVerify |
觀看驗證碼需要驗證 | 驗證碼觀看 |
'CustomSignParamsMiss' |
AuthVerifyError.CustomSignParamsMiss |
缺少自訂授權參數 | 自訂授權 |
'ExternalError' |
AuthVerifyError.ExternalError |
外部授權失敗 | 外部授權 |
'SameViewer' |
AuthVerifyError.SameViewer |
同個觀眾 | 獨立授權/外部授權 |
