2017-08-11 18 views
0

Ich entwickle eine App, ich habe einen Backend-Server Azure API App, die Owin Token Bearer verwendet. Ich versuche, mich in meinem Backend einzuloggen und Token zurück zu bekommen, wie in meinem Web-Client. Ich kann mich erfolgreich anmelden, aber es gibt kein Token in der Antwortnachricht. Ich habe diesen CodeWie bekomme ich Access_Token von Flurl

string _url = ServerPath.Path + "/token"; 
HttpResponseMessage message = await _url.PostUrlEncodedAsync(
    new { 
     UserName = Username, 
     Password = Password, 
     grant_type = "password" 
    } 
); 

Jede Hilfe wird sehr geschätzt.

+0

Probieren Sie Kleinbuchstaben 'Benutzername' und' Passwort' aus. Je nachdem, wie verzeihend die Server-App ist, spielt es keine Rolle. Wenn das nicht funktioniert, erläutern Sie bitte, was Sie unter "Ich kann mich erfolgreich anmelden" verstehen. Meinst du, dieser Anruf gibt einen 200 mit und leeren Körper zurück? Das klingt wie ein Fehler auf der Serverseite. –

+0

es Antwort Antwort Nachricht, die ich habe erfolgreich Login, was ich bin auf der Suche nach seinem mein Token in dieser Antwort Nachricht ... ich kann nicht finden, die Token-Rückgabe in der Antwort Nachricht –

+0

Wenn Sie '.ReceiveString()' am Ende von Bei Ihrem Anruf erhalten Sie den Antworttext als String zurück. Wenn Sie immer noch kein Token sehen, gibt es auf der Serverseite ein Problem. –

Antwort

0

Die Authentifizierungsmethode, die Sie verwenden, gibt einen Standard OAuth 2.0 token response zurück. Das Token ist in der HttpResponseMessage Sie bekommen zurück, und Flurl der ReceiveJson kann Ihnen helfen, es auszureißen:

var response = await _url 
    .PostUrlEncodedAsync(new 
    { 
     UserName = Username, 
     Password = Password, 
     grant_type = "password" 
    }) 
    .ReceiveJson(); 

var token = (string)response.access_token; 

Bitte beachte, dass ich die nicht-generische Version von ReceiveJson hier verwendet, die eine dynamic zurückgibt. Sie könnten dies etwas robuster machen, indem Sie eine Klasse erstellen (nennen Sie sie TokenResponse), die der JSON-Struktur des gesamten Antwortkörpers entspricht, ReceiveJson<TokenResponse>() verwenden und ein stark typisiertes Antwortobjekt haben, das aus access_token herauszupicken ist.

Verwandte Themen