Använda klassen DRMAuthenticateEvent

Adobe AIR 1.0 och senare

DRMAuthenticateEvent-objektet skickas när ett NetStream-objekt försöker att spela upp skyddat innehåll som kräver inloggningsuppgifter för autentisering före uppspelning.

DRMAuthenticateEvent-hanteraren samlar in nödvändiga inloggningsuppgifter (som användarnamn, lösenord och typ) och skickar värdena till NetStream.setDRMAuthenticationCredentials()-metoden för verifiering. Varje AIR-program måste ha en funktion som erhåller inloggningsuppgifter. Programmet kan till exempel ha ett enkelt användargränssnitt där användaren kan ange sitt användarnamn och lösenord. Ha också med en funktion för hantering och begränsning av upprepade autentiseringsförsök.

DRMAuthenticateEvent-egenskaper

Klassen DRMAuthenticateEvent innehåller följande egenskaper:

Egenskap

Beskrivning

authenticationType

Anger om inloggningsuppgifterna gäller för autentisering mot Flash Access (drm) eller en proxyserver (proxy). Proxyalternativet innebär till exempel att programmet autentiserar mot en proxyserver om det krävs innan användaren kan börja använda Internet. Om inte anonym autentisering används måste användaren fortfarande autentisera mot Flash Access efter proxyautentiseringen för att få vouchern och spela upp innehållet. Du kan använda setDRMAuthenticationcredentials() en andra gång med drm-alternativet för att autentisera mot Flash Access.

huvud

Filhuvudet med krypterat innehåll som tillhandahålls av servern. Det innehåller information om det krypterade innehållet.

netstream

NetStream-objektet som initierade den här händelsen.

passwordPrompt

En uppmaning om ett lösenord, tillhandahålls av servern. Strängen kan innehålla instruktioner för det lösenord som krävs.

urlUppmaning

Ett kommando för en URL tillhandahålls av servern. Strängen kan ange platsen dit användarnamnet och lösenordet ska skickas.

usernamePrompt

En uppmaning för ett användarnamn; tillhandahålls av servern. Strängen kan innehålla instruktioner för det användarnamn som krävs. Innehållsleverantören kan till exempel kräva en e-postadress som användarnamn.

Skapa en DRMAuthenticateEvent-hanterare

I följande exempel skapas en händelsehanterare som skickar en uppsättning hårdkodade inloggningsuppgifter till NetStream-objektet som utlöste händelsen. (Koden för att spela upp videofilmen och säkerställa anslutningen till videoströmmen tas inte med här.)

var connection:NetConnection = new NetConnection(); 
connection.connect(null); 
 
var videoStream:NetStream = new NetStream(connection); 
 
videoStream.addEventListener(DRMAuthenticateEvent.DRM_AUTHENTICATE, 
                            drmAuthenticateEventHandler) 
 
private function drmAuthenticateEventHandler(event:DRMAuthenticateEvent):void  
{ 
    videoStream.setDRMAuthenticationCredentials("administrator", "password", "drm"); 
} 

Skapa ett gränssnitt för att hämta inloggningsuppgifter

Om det skyddade innehållet kräver användarautentisering måste AIR-programmet vanligtvis hämta användarens inloggningsuppgifter via ett användargränssnitt.

Nedan finns ett Flex-exempel på ett enkelt gränssnitt som hämtar inloggningsuppgifter. Det består av ett panelobjekt som innehåller två TextInput-objekt, ett för användarnamnet och ett för lösenordet. Panelen innehåller också en knapp som startar metoden 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>

Metoden credentials() är en användardefinierad metod som skickar värdena för användarnamnet och lösenordet till metoden setDRMAuthenticationCredentials(). När värdena har skickats återställer metoden credentials() värdena på TextInput-objekten.

<mx:Script> 
    <![CDATA[ 
        public function credentials():void  
        { 
            videoStream.setDRMAuthenticationCredentials(uName, pWord, "drm"); 
            uName.text = ""; 
            pWord.text = ""; 
        } 
    ]]> 
</mx:Script>

Ett sätt att implementera den här typen av enkelt gränssnitt är att inkludera panelen i ett nytt läge. Det nya läget bygger på grundläget när DRMAuthenticateEvent-objektet skapas. Följande exempel innehåller ett VideoDisplay-objekt med ett källattribut som pekar på en skyddad FLV-fil. I det här fallet ändras metoden credentials() så att den även returnerar programmet till grundläget. Metoden gör det efter att användarens inloggningsuppgifter har skickats och värdena för TextInput-objektet har återställts.

<?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>