Development Trends

Archive for July, 2009

How to use authorization headers in an Adobe AIR Application

with 7 comments

If you want to use some of the Google API’s in an Adobe AIR application you might run into some tricky issues regarding authorization headers. In this example, I will try to show you how to receive this Auth header token and then use it for subsequent calls to methods in the Google API later in the process.

In the following example – I will show you how to connect to Google Spreadsheet

The Google login (named ClientLogin) and methodcall is done in two steps. First step is to call the ClientLogin url (https://www.google.com/accounts/ClientLogin) in order to tell Google what service you would like to access and also pass your username/password for this account. If the uservalidation is succesfull then Google will send an Auth token in the response. You need to use this token in any other subsequent calls to methods in the Google API.

Next step is to call a method in Google spreadsheet – and in this example we will retrieve a list of spreadsheet objects. And here it’s important to pass the authorization header:

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication
    xmlns:mx="http://www.adobe.com/2006/mxml"
    layout="absolute">

    <mx:Script>
        <![CDATA[

            import mx.rpc.events.FaultEvent;
            import mx.rpc.events.ResultEvent;
            import mx.controls.Alert;    
            import mx.utils.Base64Encoder;    

            [Bindable]
            private var AuthString:String;

            private function CallHTTP():void
            {
                google.send();                
            }            

            public function handleLoginPlain(event:ResultEvent):void
            {  

               var textindex:int;

               textout.text = event.result.toString();
               AuthString = event.result.toString();
               textindex = AuthString.search("Auth");
               AuthString = AuthString.substring(textindex);
               AuthString = AuthString.replace("Auth=","");
               textindex = AuthString.length;
               textindex = textindex - 1;
               AuthString = AuthString.substring(0,textindex);

               key.text = AuthString;

               googleaccount.headers =
               {Authorization:"GoogleLogin auth="+AuthString.toString()};
               googleaccount.send();
            }    
            public function handleLoginFault(event:FaultEvent):void
            {
              Alert.show(event.fault.faultString, "Error");
            }    

            public function handlePlaindata(event:ResultEvent):void
            {  
              Alert.show('You are connected to Google Spreadsheet',
                         'Login', mx.controls.Alert.OK);
            }    
            public function handleFaultdata(event:FaultEvent):void
            {
              Alert.show(event.fault.faultString, "Error");
            }            
        ]]>
    </mx:Script>            

    <mx:HTTPService id="google"
        url="https://www.google.com/accounts/ClientLogin"
        method="POST"
        contentType="application/x-www-form-urlencoded"              
        result="handleLoginPlain(event);"
        fault="handleLoginFault(event);" >
      <mx:request xmlns="">
        <accountType>GOOGLE</accountType>
        <Email>enter your e-mail address here</Email>
        <Passwd>enter your password here</Passwd>
        <source>enter your application name here</source>
        <service>wise</service>
      </mx:request>
    </mx:HTTPService>    

    <mx:HTTPService id="googleaccount"
        url="http://spreadsheets.google.com/feeds/spreadsheets/private/full"         
        result="handlePlaindata(event);"
        fault="handleFaultdata(event);" />

    <mx:Button id="login" x="40" y="30" label="Login" click="CallHTTP()"/>
    <mx:TextArea id="textout" x="40" y="60" width="400" height="260"/>
    <mx:TextInput id="key" x="104" y="30" width="336"/>

</mx:WindowedApplication>

Written by MKE

July 9th, 2009 at 11:11 pm

Posted in AIR, API, Adobe, Google

Tagged with , ,

Google Chrome OS – how will this impact RIA’s ?

with one comment

Google has announced a new project to build a new OS – called Google Chrome OS. The OS will be an open-source lightweight operating system. It’s planned to be available for consumers in the seconf half of 2010. Read more in the official Google Blog.

Written by MKE

July 9th, 2009 at 1:45 pm

Developing rich Internet applications for SAP with Adobe Flex

without comments

Do you want to know/learn more about RIA for SAP? – then read this whitepaper from Adobe.

Written by MKE

July 3rd, 2009 at 10:43 am