保利威文档中心

幫助中心

觀看條件模組

更新時間: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 同個觀眾 獨立授權/外部授權

四、Api 方法概覽

Api 方法 說明
isAuthorized 判斷目前使用者是否已進行觀看條件授權
getAuthSettings 取得觀看條件設定列表
verifyNoneAuth 驗證無條件觀看/公開觀看
verifyPhoneAuth 驗證白名單觀看
getAuthPayData 取得付費觀看的支付資訊
checkPayStatus 取得付費觀看的支付狀態
startCheckPayStatusPolling 啟動支付狀態檢查輪詢
closeCheckPayStatusPolling 結束支付狀態檢查輪詢
getWechatPayCheckData 取得微信掃碼觀看資訊
checkWechatPayStatus 取得微信掃碼觀看狀態
startCheckWechatPayStatusPolling 開啟微信支付狀態檢查輪詢
closeCheckWechatPayStatusPolling 結束微信支付狀態檢查輪詢
verifyCodeAuth 驗證驗證碼觀看
getAuthInfoFields 取得登記觀看表單設定列表
verifyInfoAuth 驗證登記觀看
loginInfoAuth 登入登記觀看
getCustomAuthUrl 取得自訂授權的位址
redirectCustomAuthUrl 重新導向到自訂授權位址
allowAutoRedirectCustomAuthUrl 允許自動重新導向到自訂授權位址
allowToVerifyCustomAuth 允許驗證自訂授權
verifyCustomAuth 驗證自訂授權簽名參數
getExternalAuthButtonEnabled 外部授權登入按鈕是否啟用
allowToVerifyExternalAuth 允許驗證外部授權
verifyExternalAuth 驗證外部授權簽名參數
getExternalAuthFailUrl 取得外部授權失敗的位址
redirectExternalAuthFailUrl 重新導向到外部授權失敗位址
allowAutoRedirectExternalAuthFailUrl 允許自動重新導向到外部授權失敗頁面
allowToVerifyDirectAuth 允許驗證獨立授權
verifyDirectAuth 驗證獨立授權簽名參數
getDirectAuthFailUrl 取得獨立授權失敗的位址
redirectDirectAuthFailUrl 重新導向到獨立授權失敗位址
allowAutoRedirectDirectAuthFailUrl 允許自動重新導向到獨立授權失敗頁面
getInviteWatchAuthAuditStatus 取得邀請觀看授權審核狀態
allowInviteWatchAuth 是否允許驗證邀請觀看授權
verifyInviteWatchAuth 驗證邀請觀看授權
getInviteWatchAuthInfo 取得邀請觀看授權資訊
联系客服,在线咨询