-
使用 URLLoader 物件,載入受保護內容之中繼資料檔案的位元組。將這個物件設為變數 (例如
metadata_bytes
)。
所有受 Adobe Access 控制的內容都具有 Adobe Access 中繼資料。封裝內容時,這個中繼資料可以與內容一起儲存為不同的中繼資料檔案 (.metadata)。如需詳細資訊,請參閱 Adobe Access 文件。
-
建立 DRMContentData 實體。將這個程式碼放入 try-catch 區塊:
new DRMContentData(
metadata_bytes
)
其中
metadata_bytes
是在步驟 1 中取得的 URLLoader 物件。
-
(僅限 Flash Player) 執行階段會檢查 Adobe Access 模組。若找不到,便會擲回 DRMErrorEvent 錯誤碼 3344 或 DRMErrorEvent 錯誤碼 3343 的 IllegalOperationError。
若要處理此錯誤,請使用 SystemUpdater API 下載 Adobe Access 模組。下載此模組之後,SystemUpdater 物件會傳送 COMPLETE 事件。請納入這個事件的事件偵聽程式,以便傳送這個事件時回到步驟 2。下列程式碼會示範這些步驟:
flash.system.SystemUpdater.addEventListener(Event.COMPLETE, updateCompleteHandler);
flash.system.SystemUpdater.update(flash.system.SystemUpdaterType.DRM)
private function updateCompleteHandler (event:Event):void {
/*redo step 2*/
drmContentData = new DRMContentData(metadata_bytes);
}
如果必須更新播放程式本身,則會傳送狀態事件。如需有關處理這個事件的詳細資訊,請參閱
更新事件的偵聽
。
備註:
在 AIR 應用程式中,AIR 安裝程式會處理 Adobe Access 模組的更新以及必要的執行階段更新。
-
建立偵聽程式,以偵聽從 DRMManager 物件傳送的 DRMStatusEvent 和 DRMErrorEvent:
DRMManager.addEventListener(DRMStatusEvent.DRM_STATUS, onDRMStatus);
DRMManager.addEventListener(DRMErrorEvent.DRM_ERROR, onDRMError);
在 DRMStatusEvent 偵聽程式中,檢查憑證是否有效 (非 null)。在 DRMErrorEvent 偵聽程式中,處理 DRMErrorEvent。請參閱
使用 DRMStatusEvent 類別
和
使用 DRMErrorEvent 類別
。
-
載入內容播放所需的憑證 (授權)。
首先,嘗試載入本機儲存的授權,以播放內容:
DRMManager.loadvoucher(drmContentData, LoadVoucherSetting.LOCAL_ONLY)
載入完成之後,DRMManager 物件會傳送
DRMStatusEvent.DRM_Status
。
-
如果 DRMVoucher 物件不是 null,則為有效憑證。跳至步驟 13。
-
如果 DRMVoucher 物件是 null,請檢查此內容原則要求的驗證方法。使用
DRMContentData.authenticationMethod
屬性。
-
如果驗證方法是
ANONYMOUS
,請前往步驟 13。
-
如果驗證方法是
USERNAME_AND_PASSWORD
,則您的應用程式必須提供機制,讓使用者輸入憑證。將這些憑證傳遞給授權伺服器,以驗證使用者:
DRMManager.authenticate(metadata.serverURL, metadata.domain, username, password)
如果驗證失敗,DRMManager 會傳送
DRMAuthenticationErrorEvent
,如果驗證成功,則會傳送
DRMAuthenticationCompleteEvent
。建立這些事件的偵聽程式。
-
如果驗證方法是
UNKNOWN
,便必須使用自訂驗證方法。在此情況下,內容提供者已安排透過不使用 ActionScript 3.0 API 的頻外方法來完成驗證。自訂驗證程序必須產生可傳遞給
DRMManager.setAuthenticationToken()
方法的驗證權杖。
-
如果驗證失敗,您的應用程式必須回到步驟 9。確認應用程式具有機制可以處理和限制重複的驗證失敗。例如,嘗試三次之後,會向使用者顯示一則訊息,指出驗證失敗,因此無法播放內容。
-
若要使用儲存的權杖,而非提示使用者輸入憑證,則請使用
DRMManager.setAuthenticationToken()
方法設定權杖。然後,從授權伺服器下載授權,並以步驟 8 的方式播放內容。
-
(選擇性) 如果驗證成功,則可以擷取驗證權杖 (其為記憶體中快取的位元組陣列)。使用
DRMAuthenticationCompleteEvent.token
屬性,取得這個權杖。您可以儲存並使用驗證權杖,讓使用者不需要重複輸入這個內容的憑證。授權伺服器會判斷驗證權杖的有效期間。
-
如果驗證成功,則從授權伺服器下載授權:
DRMManager.loadvoucher(drmContentData, LoadVoucherSetting.FORCE_REFRESH)
載入完成之後,DRMManager 物件會傳送 DRMStatusEvent.DRM_STATUS。偵聽這個事件,您可以在傳送這個事件後播放內容。
-
建立 NetStream 物件並呼叫它的
play()
方法來播放視訊:
stream = new NetStream(connection);
stream.addEventListener(DRMStatusEvent.DRM _STATUS, drmStatusHandler);
stream.addEventListener(DRMErrorEvent.DRM_ERROR, drmErrorHandler);
stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
stream.client = new CustomClient();
video.attachNetStream(stream);
stream.play(videoURL);