2015-09-29 4 views
6

Ich entwickle eine universelle Windows-App (Windows 10), wo ich eine "Two-Layered" App habe: Auf IoT-Geräten (zB Raspberry Pi 2) wird nur angezeigt Inhalt, aber auf allen anderen Geräten (PC, Notebook, Smartphone, etc.) haben Sie so etwas wie einen Controller für die angezeigten Daten.Refresh Token von Windows Live SDK in Universal Windows App empfangen

Eine der Funktionen, die ich realisieren möchte, ist die Windows Live Login im Controller-Teil, um Kalenderinformationen im Display-IoT-Teil zu erhalten. Dafür gebe ich den Benutzern die Möglichkeit, mit Windows Live anmelden, wie unten dargestellt:

LiveAuthClient auth = new LiveAuthClient(); 
LiveLoginResult loginResult = await auth.LoginAsync(new string[] { "wl.signin", "wl.calendars", "wl.offline_access" }); 
if (loginResult.Status == LiveConnectSessionStatus.Connected) 
{ 
    //Save the AccessToken from loginResult.Session.AccessToken 
    TokenHandler.Save(loginResult.Session.AccessToken); //AccessToken is quite accessable right here 
    //But as far as I know I should save the RefreshToken, but the Session has no field for it 
} 

Also mein proplem ist, dass ich nicht bekommen, ein Feld aus der LiveConnectSession wo die RefreshToken gespeichert werden könnten, aber alle Artikel, die ich lese, erzählen, dass ich nur wl.offline_access zu den Bereichen für das Erhalten eines RefreshToken hinzufügen muss.

Ich bin nicht sehr vertraut mit OAuth2.0 und SDKs/APIs sind auf OAuth, so weiß jemand etwas, was ich falsch mache oder wie ich damit umgehen muss?

Ich bin wirklich dankbar für alle gut gemeinten und hilfreichen Antworten!

PS: Ich bin mit dem Live-SDK 5.6 und nicht der neue Microsoft Onedrive API, weil sie keinen Zugang Informationen

+0

Niemand mit einer Idee? –

+0

Wenn Sie sich [die Quelle von liveSdk] (https://github.com/liveservices/LiveSDK-for-Windows) ansehen, dann werden Sie feststellen, dass die 'RefreshTokenIfNeeded()' Methode bei der Ausführung der Anfrage am häufigsten ist namens. Daher denke ich, dass das Aktualisierungstoken nicht verfügbar ist, da es automatisch behandelt wird. – Romasz

+0

Ich habe Live SDK 5.6.3 aus nuget-Paket installiert, und dort hat loginResult.Session die RefreshToken-Eigenschaft, also nicht sicher, was Sie dort verwenden, wo es keine solche Eigenschaft gibt. – Evk

Antwort

2

wl.offline_access

in diesem Fall über sie spricht mit Kalender hat Benutzerautorisierung und Ermöglichen, dass die App die Berechtigung hat, zu arbeiten, wenn sie nicht anwesend ist (wenn der Benutzer offline ist, anstelle des Computers/Geräts).
Dies bedeutet nicht, dass die App Benutzer anmelden würde, wenn das System offline ist, aber den Benutzer dazu auffordern würde, die App zu aktivieren, wenn der Benutzer nicht anwesend ist.
Sogar ich hatte das Live SDK verwendet, um Benutzerdaten in einem meiner früheren Projekte abzurufen und für den Kalender musste Office365 verwendet werden. Jetzt können Sie sogar verwenden Outlook API Obwohl wir Access Token mit loginResult.Session.AccessToken bekommen, aber ich glaube nicht, dass ein refreshToken für WinRT App generiert wird.

Verwandte Themen