2015-09-29 13 views
6

Sto sviluppando un'applicazione universale per Windows (Windows 10) in cui ho un'app "Due livelli": Su dispositivi IoT (ad es. Raspberry Pi 2) mostra solo contenuto, ma su tutti gli altri dispositivi (PC, Notebook, Smartphone, ecc.) avete qualcosa come un controller per i dati visualizzati.Ricezione del token di aggiornamento da Windows Live SDK nell'app universale di Windows

Una delle funzionalità che voglio realizzare è l'accesso a Windows Live nella parte Controller per ottenere le informazioni del calendario nella parte Display-IoT. Per questo io do agli utenti la possibilità di accedere con Windows Live come illustrato di seguito:

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 
} 

Quindi il mio proplem è che non ottengo un campo dalla LiveConnectSession dove il RefreshToken potrebbe essere conservato, ma tutti gli articoli che ho letto stanno dicendo che ho solo bisogno di aggiungere wl.offline_access agli ambiti per ricevere un RefreshToken.

Non ho molta familiarità con OAuth2.0 e SDK/API stanno prendendo piede su OAuth, quindi qualcuno sa qualcosa, cosa sto facendo male o come devo gestirlo?

Sono davvero grato per tutte le risposte ben intenzionate e utili!

PS: sto utilizzando l'SDK 5.6 dal vivo e non la nuova API Microsoft Onedrive, perché non ha accesso alle informazioni del calendario

+0

Nessuno con un'idea? –

+0

Se date un'occhiata a [la fonte di liveSdk] (https://github.com/liveservices/LiveSDK-for-Windows), allora vedrete che sulla maggior parte delle richieste in esecuzione, il metodo 'RefreshTokenIfNeeded()' è chiamato. Quindi penso che il token di aggiornamento non sia esposto, in quanto viene gestito automaticamente. – Romasz

+0

Ho installato Live SDK 5.6.3 dal pacchetto nuget, e lì loginResult.Session ha la proprietà RefreshToken, quindi non sono sicuro di cosa si usi dove non ci sono tali proprietà. – Evk

risposta

2

wl.offline_access

in questo caso si sta parlando autorizzazione dell'utente e consentire all'app di avere l'autorizzazione dell'utente a lavorare quando non sono presenti (quando l'utente è offline, invece del computer/dispositivo).
Ciò significa che l'app effettua l'accesso dell'utente quando il sistema è offline ma richiede all'utente di consentire all'app di funzionare quando l'utente non è presente.
Anche io avevo usato il Live SDK per recuperare i dati degli utenti in uno dei miei progetti precedenti e, ma per il calendario dovevo usare Office365. Ora puoi anche utilizzare Outlook API Anche se otteniamo il token di accesso utilizzando loginResult.Session.AccessToken ma non penso che venga generato un refreshToken per l'app WinRT.

Problemi correlati