Si el contenido protegido requiere autenticación del usuario, la aplicación de AIR normalmente tiene que recuperar las credenciales de autenticación del usuario a través de una interfaz de usuario.
Lo siguiente es un ejemplo en Flex de una interfaz de usuario sencilla para recuperar credenciales de usuario. Consta de un objeto de panel que contiene dos objetos TextInput, uno para cada una de las credenciales de nombre de usuario y contraseña. El panel también contiene un botón que inicia el 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>
El método
credentials()
es un método definido por el usuario que pasa al método
setDRMAuthenticationCredentials()
los valores de nombre de usuario y contraseña. Una vez pasados estos valores, el método
credentials()
restaura los valores de los objetos TextInput.
<mx:Script>
<![CDATA[
public function credentials():void
{
videoStream.setDRMAuthenticationCredentials(uName, pWord, "drm");
uName.text = "";
pWord.text = "";
}
]]>
</mx:Script>
Una forma de implementar este tipo de interfaz sencilla es incluir el panel como parte de un nuevo estado. El nuevo estado se origina del estado base cuando se emite el objeto DRMAuthenticateEvent. El siguiente ejemplo contiene un objeto VideoDisplay con un atributo de origen que apunta a un archivo FLV protegido. En ese caso, el método
credentials()
se modifica para que también devuelva la aplicación a su estado base. Este método lo hace tras pasar las credenciales del usuario y restaurar los valores del 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>