Geotagga dina otaggade bilder med Google Latitude PDF Skriv ut Skicka sidan
2011-01-07 15:28
Jag hade tänkt att göra en ganska enkel Adobe AIR app som hämtar din Google Latitude data och parar ihop den med dina bilder från digitalkameran (som saknar gps). Men jag gick ganska direkt i sank och lägger projektet på is. 

Problememet är att jag kan inte Autentiera mot Google och får bara tillbaka:
ArgumentError: Error #2096: The HTTP request header Authorization: OAuth auth=(long string) cannot be set via ActionScript.
at flash.net::URLStream/load()
at flash.net::URLLoader/load()


Jag har sökt lösningar och kommit fram till att det inte fungerar om man försöker skicka in headern "Authorization" genom ett as3-baserat projekt, medan det verkar fungera i ett Flexprojekt. Jag har dock inte provat det där. Jag har däremot provat i:
  • Flash IDE, AIR 2.5
  • FlashDevelop, AS3-projekt med Flex SDK 4.1
  • FlashDevelop, AIR 1.5
Jag kan dock ha missat något som gör det möjligt att skapa kopplingen mot OAuth. Sitter någon på den lösningen är jag väldigt intresserad att höra hur det går till!

Jag postar min kod här och om någon vill ta upp det eller har tips så är det välkommet! Vill bara lägga en brasklapp för att koden är som snabbast ihopsnodd och inte speciellt snygg... Generad Orkar inte fixa till det bara för den här bloggposten.

package 
{
    import com.chewtinfoil.utils.StringUtils;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.net.navigateToURL;
    import flash.net.URLLoader;
    import flash.net.URLRequest;
    import flash.net.URLRequestHeader;
    import flash.net.URLRequestMethod;
    import flash.net.URLVariables;
    
    /**
     * ...
     * @author Patric Jonsson
     */
    public class Main extends Sprite 
    {
        private var pAuthString:String;
        
        public function Main():void 
        {
            if (stage) init();
            else addEventListener(Event.ADDED_TO_STAGE, init);
        }
        
        private function init(e:Event = null):void 
        {
            removeEventListener(Event.ADDED_TO_STAGE, init);
            // entry point
            
            var variablesLogin:URLVariables = new URLVariables();
            var varSendLogin:URLRequest = new URLRequest("https://www.google.com/accounts/ClientLogin");
            var header:URLRequestHeader = new URLRequestHeader("Content-Type", "application/x-www-form-urlencoded");
            varSendLogin.requestHeaders.push(header);
            varSendLogin.method = URLRequestMethod.POST;
            
            var varLoaderLogin:URLLoader = new URLLoader();
            varLoaderLogin.addEventListener(Event.COMPLETE, completeToken);
            
            variablesLogin.Email = escape("//GOOGLE-USER//");
            variablesLogin.Passwd = escape("//GOOGLE-USER-PASSWORD//");
            variablesLogin.service = "latitude";
            variablesLogin.source = "GeoTag images from Google Latitude";
            varSendLogin.data = variablesLogin;
            varLoaderLogin.load(varSendLogin);
        }
        
        private function completeToken(e:Event):void 
        {
            if (e.target.data.indexOf("Auth=") != -1)
            {
                //newline char in the end must be removed
                pAuthString = StringUtils.afterLast(e.target.data, "=").split("\n")[0]; 
                
                var tRequestToken:URLRequest = new URLRequest("https://www.google.com/accounts/OAuthGetRequestToken");
                tRequestToken.requestHeaders.push(new URLRequestHeader("Content-Type", "application/x-www-form-urlencoded"));
                tRequestToken.requestHeaders.push(new URLRequestHeader("Authorization: OAuth auth=" + pAuthString));
                tRequestToken.method = URLRequestMethod.POST;
                
                var tRequestLoader:URLLoader = new URLLoader();
                tRequestLoader.addEventListener(Event.COMPLETE, completeLogin);
                tRequestLoader.load(tRequestToken)
            }
        }
        
        private function completeLogin(e:Event):void 
        {
            // det gick! - inte :(
            trace(e.target.data)
        }
    }
}

Bedöm artikeln:
Skapad 2011-01-07 15:28 av Patric Jonsson

Visad 1068 gånger än så länge.

Senaste artiklarna av Patric Jonsson


Senast uppdaterad 2011-01-07 15:47

Kommentarer  

 
+1 #1 Danel Kirch 2011-01-08 12:35
Kan det här vara av intresse?

http://www.zedia.net/2009/how-to-connect-to-google-analytics-data-api-in-air/
Citera
 
 
0 #2 Patric Jonsson 2011-01-09 22:43
Fick lite hopp där en sekund ungefär. Det som görs på den sidan är exakt vad som görs i init-funktionen i min kod. Problemet uppstår först i funktionen completeToken på rad 58, där jag försöker använda det token jag fått av inloggningen på google-kontot.
Citera
 

Lägg till kommentar


Medlemmar


Members Online: 0

Senaste registrerade

LisaRaichand : 22 april 2012 19:55pilu : 31 januari 2012 09:58Gostship99 : 07 januari 2012 19:37Director : 18 november 2011 05:44Dahlback : 17 november 2011 16:28mikwonwheels : 14 november 2011 13:20Kviddis : 04 oktober 2011 19:53buddha1966 : 25 september 2011 14:22idesign : 20 september 2011 08:45TxT : 05 september 2011 11:07ApelG : 05 september 2011 11:04
Partners
Adobe user group
fdt5-logo
TechSmith
Lynda user group
Apress user group
O´reilly user group
Peachpit user group
Friends Of Ed
Manning user group


Senaste blogginläggen

Av: Danel
-20.02.2012
Av: Patric Jonsson
-27.01.2012
Av: Patric Jonsson
- 3.01.2012
Av: Patric Jonsson
-29.11.2011
Av: Danel
-26.11.2011
Av: Patric Jonsson
-14.11.2011
Av: Patric Jonsson
- 8.11.2011
Av: Danel
- 7.11.2011
Av: Patric Jonsson
-27.09.2011

Senaste kommentarer

Senaste trådarna

Av Hallon
- 08/05/2012
Av goldensebbe
- 06/04/2012
Av Hallon
- 29/03/2012
Av buddha1966
- 06/03/2012
Av buddha1966
- 29/02/2012
Av Wide Circle
- 20/02/2012
Av zocstyle
- 15/02/2012
Av ufoalf30
- 05/01/2012
Av peterdavidsson
- 08/12/2011
Av JohnPaulie
- 03/12/2011
Av coffaldo
- 17/11/2011
Av buddha1966
- 05/11/2011
Av buddha1966
- 03/11/2011

Blogkalender

  • 2012 (3)
  • 2011 (37)
  • 2010 (85)
  • 2009 (18)
  • Vem är online

    Vi har 35 besökare online

    Relaterande artiklar

    RSS
    Patric Jonsson - flashguru.se
    RocketTheme Joomla Templates