2016-03-03 36 views
8

Używam interfejsu API OneDrive.Uwierzytelnianie za pomocą Onedrive SDK/API (lub dowolnego interfejsu API)

Znajdź kod tutaj https://github.com/onedrive/onedrive-sdk-csharp

specificaly onedrive Api Browser.

Nie mam formalnego wykształcenia w tym konkretnym przedmiocie (Uwierzytelnienie).

Chcę wiedzieć, w jaki sposób będę uwierzytelniony po pierwszym zalogowaniu? To znaczy, w jaki sposób mam przechowywać informacje logowania, gdy wydaje się, że za każdym razem oczekuje się, że będzie się wyszukiwał URI tokena?

Na przykład, gdy uruchamiane jest rozwiązanie OneDrive API Browser, należy się logować za każdym razem, gdy aplikacja jest uruchomiona. Co jeśli chciałbym zapisać referencje gdzieś, powiedzmy w pliku tekstowym? Jak to zrobić? (Zdaję sobie sprawę z problemów związanych z bezpieczeństwem/złą praktyką).

Czy muszę zapisać gdzieś token? Czy istnieje inna usługa do użycia w przypadku długoterminowych tokenów? Czy to możliwe? Czy pliki cookie są włączone?

+0

Jeden standardowy sposób to zrobić jest użycie API Windows Data Protection (DPAPI), poprzez klasy ProtectedData w .NET: https://msdn.microsoft.com/en-us/library/ms229741.aspx –

+0

Sprawdź to https://github.com/OneDrive/onedrive-sdk-dotnet-msa-auth-adapter#cache-sessions W przeciwnym razie można używać punktów końcowych usługi Microsoft oauth bezpośrednio https://dev.onedrive.com/auth/msa_oauth.htm#step-3-get-a-new-access-token-lub-refresh-token – qjuanp

Odpowiedz

2

Po uwierzytelnieniu aplikacji przy użyciu numeru code flow otrzymasz odświeżony token, który możesz zapisać razem z identyfikatorem klienta i użyć go później, aby pobrać token dostępu zgodnie z opisem here. dla Windows i Windows Phone można również użyć Authentication Adapter for the OneDrive SDK który wykonuje całą pracę:

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);