Nel caso in cui il contenuto protetto richieda l'autenticazione utente, l'applicazione AIR deve in genere recuperare le credenziali di autenticazione dell'utente tramite un'interfaccia utente.
Di seguito è riportato un esempio Flex di un'interfaccia utente semplice per il recupero di credenziali utente. È composta da un oggetto panello contenente due oggetti TextInput, uno per ciascuna delle credenziali nome utente e password. Il pannello contiene inoltre un pulsante che esegue il metodo
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>
Il metodo
credentials()
è un metodo definito dall'utente che passa i valori di nome utente e password al metodo
setDRMAuthenticationCredentials()
. Una volta passati i valori, il metodo
credentials()
reimposta i valori degli oggetti TextInput.
<mx:Script>
<![CDATA[
public function credentials():void
{
videoStream.setDRMAuthenticationCredentials(uName, pWord, "drm");
uName.text = "";
pWord.text = "";
}
]]>
</mx:Script>
Un modo per implementare questo tipo di semplice interfaccia è includere il pannello come parte di un nuovo stato. Il nuovo stato ha origine dallo stato base quando l'oggetto DRMAuthenticateEvent viene generato. L'esempio seguente contiene un oggetto VideoDisplay con un attributo di origine che fa riferimento a un FLV protetto. In questo caso, il metodo
credentials()
viene modificato in modo da ripristinare lo stato di base dell'applicazione. Questa operazione viene eseguita dopo aver passato le credenziali utente e ripristinato i valori oggetto 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>