No caso em que o conteúdo protegido requer autenticação do usuário, o aplicativo do AIR normalmente deve obter as credenciais de autenticação do usuário por meio de uma interface de usuário.
A seguir, um exemplo do Flex de uma interface de usuário simples para recuperar credenciais do usuário. Ele consiste de um objeto de painel contendo dois objetos TextInput, um para cada uma das credenciais de nome de usuário e senha. O painel também contém um botão que inicia o método
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>
O método
credentials()
é um método definido pelo usuário que transmite os valores de nome de usuário e senha para o método
setDRMAuthenticationCredentials()
. Depois que os valores são passados, o método
credentials()
redefine os valores dos objetos TextInput.
<mx:Script>
<![CDATA[
public function credentials():void
{
videoStream.setDRMAuthenticationCredentials(uName, pWord, "drm");
uName.text = "";
pWord.text = "";
}
]]>
</mx:Script>
Uma forma de implementar este tipo de interface simples é incluir o painel como parte de um estado novo. O novo estado tem origem em um estado base onde o objeto DRMAuthenticateEvent é lançado. O exemplo a seguir contém um objeto VideoDisplay com um atributo de origem que aponta para um arquivo FLV protegido. Neste caso, o método
credentials()
é modificado para também retornar o aplicativo ao estado base. Este método faz isto, enviando as credenciais do usuário e reiniciando os valores de objeto 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>