2016-03-03 26 views
8

Sto armeggiando con l'API OneDrive.Restare autenticati con l'SDK/API Onedrive (o qualsiasi altra API)

trovare il codice qui https://github.com/onedrive/onedrive-sdk-csharp

specificatamente l'Api Browser Microsoft Onedrive.

Non ho alcuna istruzione formale su questo argomento specifico (autenticazione).

Voglio sapere, come posso rimanere autenticato dopo il primo accesso? Cioè, come potrei memorizzare le informazioni di accesso quando sembra che ci si aspetti di interrogare l'URI per un token ogni volta?

Ad esempio, quando viene eseguita la soluzione del browser API OneDrive, è necessario eseguire l'accesso ogni volta che viene eseguita l'app. Cosa succede se volevo salvare le credenziali da qualche parte, ad esempio in un file di testo? Come potrei farlo? (Sono a conoscenza dei problemi di sicurezza/cattive pratiche)

Devo salvare il token da qualche parte? Esiste un altro servizio da utilizzare per i token a lungo termine? È possibile? I cookie sono coinvolti?

+0

Un modo standard di fare questo è di usare la Data Protection API di Windows (DPAPI), attraverso la classe ProtectedData in .NET: https://msdn.microsoft.com/en-us/library/ms229741.aspx –

+0

Controlla questo https://github.com/OneDrive/onedrive-sdk-dotnet-msa-auth-adapter#cache-sessions In caso contrario, è possibile utilizzare direttamente gli endpoint oauth del servizio account Microsoft https://dev.onedrive.com/auth/msa_oauth.htm#step-3-get-a-new-access-token-or-refresh-token – qjuanp

risposta

2

Concettualmente dopo aver autenticato l'app utilizzando code flow, si riceverà un token di aggiornamento che è possibile salvare insieme all'ID del client e utilizzarlo in un secondo momento per recuperare il token di accesso come descritto here. per Windows e Windows Phone è anche possibile utilizzare il Authentication Adapter for the OneDrive SDK che fa tutto il lavoro:

MsaAuthenticationProvider msaAuthProvider = new MsaAuthenticationProvider(
          MsaClientId, 
          MsaClientSecret, 
          RedirectUri, 
          Scopes, 
          null, 
          new CredentialVault(MsaClientId)); 

     await msaAuthProvider.RestoreMostRecentFromCacheOrAuthenticateUserAsync(userName); 
     OneDriveClient oneDriveClient = new OneDriveClient("https://api.onedrive.com/v1.0", msaAuthProvider);