Zurück   Flashforum > Flash und Server > Flash mit XML und Webservices

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 10-03-2009, 19:56   #1 (permalink)
alte pfeife
 
Benutzerbild von muschko
 
Registriert seit: May 2003
Ort: Kassel
Beiträge: 1.222
Last.fm API Authentifizierung & Request

Hallo Forum,

hat zufällig jemand nen Beispiel wie ich mich mit AS3 an der API authentifiziere und nen einfachen Request absende?
Bin ein bisschen ratlos, die API Doku verwirrt mich eher als das ich wüsste wie es genau funktioniert.

API key hab ich.

Danke
muschko ist offline   Mit Zitat antworten
Alt 10-03-2009, 21:48   #2 (permalink)
Neuer User
 
Benutzerbild von mohj
 
Registriert seit: Jan 2009
Beiträge: 423
Was hast du denn genau vor? Eine Authentifikation brauchst du eigentlich nur, um etwas hinzuzufügen. zB ein neuer Tag o.ä.

Für einen einfach Request reicht eigentlich ein Aufruf mit GET Parameter, zB:
PHP-Code:
var apikey:String "....";
var 
artist:String "Armin van Buuren";
var 
loader:URLLoader = new URLLoader();
var 
url:URLRequest = new URLRequest(
"http://ws.audioscrobbler.com/2.0/?method=artist.getsimilar&artist=" artist "&api_key=" apikey);
loader.addEventListener(Event.COMPLETEcompleteHandler);
loader.load(url);

function 
completeHandler(e:Event):void
{
    var 
respond:XML = new XML(e.target.data);
    
trace(respond.similarartists..name);

Wenn du trotzdem eine Authentifizierung brauchst:
PHP-Code:
var apikey:String "....";
var 
secretkey:String "....";
var 
token:String;
var 
sk:String;
var 
loader:URLLoader = new URLLoader();

//Zuerst wird der Token mittels des API Keys geholt
var url:URLRequest = new URLRequest("http://ws.audioscrobbler.com/2.0/?method=auth.gettoken&api_key=" apikey);
loader.addEventListener(Event.COMPLETEcompleteHandler);
loader.load(url);

function 
completeHandler(e:Event):void
{
    
loader.removeEventListener(Event.COMPLETEcompleteHandler);
    var 
respond:XML = new XML(e.target.data);
    
token respond..token;

    
//Mit dem Token musst du schliesslich auf die last.fm Seite, dich einloggen und den Zugriff erlauben
    
navigateToURL(new URLRequest("http://www.last.fm/api/auth/?api_key=" apikey "&token=" token));
    
//Ist das getan, gehts mit einem Mausklick weiter im Programm...
    
stage.addEventListener(MouseEvent.CLICKclicked);
}
function 
clicked(e:MouseEvent):void
{    
    
stage.removeEventListener(MouseEvent.CLICKclicked);
    
//Der Hashwert wird generiert. Da brauchst du eventuell die MD5 Klasse, gibts bei google code
    
var hash:String MD5.hash("api_key" apikey "methodauth.getSessiontoken" token secretkey);
    
//Mit diesem Hash verlangst du schliesslich eine Session...
    
url = new URLRequest("
http://ws.audioscrobbler.com/2.0/?method=auth.getSession&api_key=" 
apikey "&api_sig=" hash "&token=" token);
    
loader.addEventListener(Event.COMPLETEauthComplete);
    
loader.load(url);
}


function 
authComplete(e:Event):void
{
    
loader.removeEventListener(Event.COMPLETEauthComplete);
    var 
respond:XML = new XML(e.target.data);
    
//und die Sessionnummer wird ausgegeben... Damit kannst du jetzt nach dem gleichen Verfahren wie oben weiterfahren
    
sk respond..key;

    
//Als kleines Beispiel lassen wir uns der aktuelle User austracen
    
var hash:String MD5.hash("api_key" apikey "methoduser.getInfosk" sk secretkey);
    
url = new URLRequest(
"http://ws.audioscrobbler.com/2.0/?method=user.getInfo&api_key=" apikey "&api_sig=" hash "&sk=" sk);
    
loader.addEventListener(Event.COMPLETEgetInfoComplete);
    
loader.load(url);
}

function 
getInfoComplete(e:Event):void
{
    
loader.removeEventListener(Event.COMPLETEgetInfoComplete);
    var 
respond:XML = new XML(e.target.data);
    
trace("You are user " respond..name " (ID " respond..id ")");


Geändert von mohj (10-03-2009 um 23:30 Uhr)
mohj ist offline   Mit Zitat antworten
Alt 11-03-2009, 08:09   #3 (permalink)
alte pfeife
 
Benutzerbild von muschko
 
Registriert seit: May 2003
Ort: Kassel
Beiträge: 1.222
wow danke

einen einfachen Request hatte ich gestern noch hinbekommen. Aber mit der Authentifizierung hatte ich mir etwas schwer getan.
Es reicht zwar in meinem Fall momentan noch aus ohne Authentifizierung zu arbeiten, aber man weiß ja nie...
Und durch deinen Code hab ich auch genau verstanden was die meinen

Dankeschön un Gruß
Henning
muschko ist offline   Mit Zitat antworten
Alt 10-05-2011, 22:43   #4 (permalink)
Assegai-Pilot
 
Benutzerbild von blazenizer
 
Registriert seit: Oct 2006
Ort: 糞箱
Beiträge: 150
Ich hol den Thread noch mal aus der Versenkung weil mir der navigateToURL-Request immer die Pop-Up-Blocker geweckt hat, da der Call nicht auf Mausklick passiert sondern erst nachdem das Token eingeholt wurde. Habe das Skript ein bissi verändert, und zwar hol ich mir beim Starten das Token und bei Klick den Session-Key.
MouseEvent.CLICK ist zu MouseEvent.MOUSE_DOWN geworden, weil der durch den Klick auf den Login-Button schon den Event gefeurt hat.

PHP-Code:
private function getToken():void {
    var 
url:URLRequest = new URLRequest("http://ws.audioscrobbler.com/2.0/?method=auth.gettoken&api_key=" apikey);
    
loader.addEventListener(Event.COMPLETEcompleteHandler);
    
loader.load(url);
}
function 
completeHandler(e:Event):void{
    
loader.removeEventListener(Event.COMPLETEcompleteHandler);
    var 
respond:XML = new XML(e.target.data);
    
token respond..token;
}
function 
getSession(e:MouseEvent):void {
    var 
callurl:String "http://www.last.fm/api/auth/?api_key=" apikey "&token=" token;
    
navigateToURL(new URLRequest(callurl));
    
stage.addEventListener(MouseEvent.MOUSE_DOWNclicked);
}
function 
clicked(e:MouseEvent):void{
    
stage.removeEventListener(MouseEvent.MOUSE_DOWNclicked);
... 
Nebenbei bemerkt hat der Session-Key ja auch kein Verfallsdatum, deswegen speicher ich das in einem SharedObject und schaue bei jedem neuen Aufruf der App, ob der da ist, und falls ja kann man sich das ganze Login-Zeugs schenken.

Geändert von blazenizer (10-05-2011 um 22:52 Uhr)
blazenizer ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 04:05 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele