如果保護的內容需要使用者驗證,AIR 應用程式通常必須透過使用者介面來擷取使用者的驗證憑證。
下列 Flex 範例建立了簡易的使用者介面,可用來擷取使用者憑證。此介面中的面板物件包含兩個 TextInput 物件,分別用於輸入使用者名稱和密碼憑證。面板上還有一個按鈕,將會叫用
credentials()
方法。
<mx:Panel x="236.5" y="113" width="325" height="204" layout="absolute" title="Login">
<mx:TextInput x="110" y="46" id="uName"/>
<mx:TextInput x="110" y="76" id="pWord" displayAsPassword="true"/>
<mx:Text x="35" y="48" text="Username:"/>
<mx:Text x="35" y="78" text="Password:"/>
<mx:Button x="120" y="115" label="Login" click="credentials()"/>
</mx:Panel>
credentials()
方法是由使用者定義的方法,會將使用者名稱和密碼值傳遞給
setDRMAuthenticationCredentials()
方法。傳遞這些值之後,
credentials()
方法隨即重設 TextInput 物件的值。
<mx:Script>
<![CDATA[
public function credentials():void
{
videoStream.setDRMAuthenticationCredentials(uName, pWord, "drm");
uName.text = "";
pWord.text = "";
}
]]>
</mx:Script>
實作此類型簡易介面的方法之一,是包含面板做為新狀態的一部分。新狀態是根據擲出 DRMAuthenticateEvent 物件時的基礎狀態。下列範例包含 VideoDisplay 物件,而其 source 特質指向保護的 FLV 檔案。在這個例子中,
credentials()
方法經過修改,所以它也會讓應用程式回到基礎狀態。在傳遞使用者憑證並重設 TextInput 物件值後,此方法也會這麼做。
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute"
width="800"
height="500"
title="DRM FLV Player"
creationComplete="initApp()" >
<mx:states>
<mx:State name="LOGIN">
<mx:AddChild position="lastChild">
<mx:Panel x="236.5" y="113" width="325" height="204" layout="absolute"
title="Login">
<mx:TextInput x="110" y="46" id="uName"/>
<mx:TextInput x="110" y="76" id="pWord" displayAsPassword="true"/>
<mx:Text x="35" y="48" text="Username:"/>
<mx:Text x="35" y="78" text="Password:"/>
<mx:Button x="120" y="115" label="Login" click="credentials()"/>
<mx:Button x="193" y="115" label="Reset" click="uName.text='';
pWord.text='';"/>
</mx:Panel>
</mx:AddChild>
</mx:State>
</mx:states>
<mx:Script>
<![CDATA[
import flash.events.DRMAuthenticateEvent;
private function initApp():void
{
videoStream.addEventListener(DRMAuthenticateEvent.DRM_AUTHENTICATE,
drmAuthenticateEventHandler);
}
public function credentials():void
{
videoStream.setDRMAuthenticationCredentials(uName, pWord, "drm");
uName.text = "";
pWord.text = "";
currentState='';
}
private function drmAuthenticateEventHandler(event:DRMAuthenticateEvent):void
{
currentState='LOGIN';
}
]]>
</mx:Script>
<mx:VideoDisplay id="video" x="50" y="25" width="700" height="350"
autoPlay="true"
bufferTime="10.0"
source="http://www.example.com/flv/Video.flv" />
</mx:WindowedApplication>