Si un contenu protégé requiert l’authentification de l’utilisateur, l’application AIR doit généralement extraire les informations d’identification de l’utilisateur au moyen d’une interface utilisateur.
Le code suivant est un exemple Flex d’interface utilisateur simple permettant de collecter les informations d’identification des utilisateurs. Il se compose d’un objet Panel contenant deux objets TextInput (le premier étant réservé aux noms d’utilisateur et le second aux mots de passe). L’objet Panel comporte également un bouton permettant de démarrer la méthode
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>
La méthode
credentials()
est une méthode définie par l’utilisateur qui transmet les valeurs de nom d’utilisateur et de mot de passe à la méthode
setDRMAuthenticationCredentials()
. Une fois ces valeurs transmises, la méthode
credentials()
réinitialise les valeurs des objets TextInput.
<mx:Script>
<![CDATA[
public function credentials():void
{
videoStream.setDRMAuthenticationCredentials(uName, pWord, "drm");
uName.text = "";
pWord.text = "";
}
]]>
</mx:Script>
Pour implémenter ce type d’interface simple, il est possible d’inclure l’objet Panel au sein d’un nouvel état. Le nouvel état provient de l’état de base lorsque l’objet DRMAuthenticateEvent est envoyé. L’exemple suivant contient un objet VideoDisplay doté d’un attribut source qui pointe vers un fichier FLV protégé. Dans ce cas, la méthode
credentials()
est modifiée de façon à ce qu’elle renvoie également l’application à son état de base. Pour cela, les informations d’identification de l’utilisateur doivent être transmises et les valeurs de l’objet TextInput réinitialisées.
<?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>