/// <summary> /// Signs in the user /// </summary> /// <returns>Returns success or failure of login attempt.</returns> public override async Task <bool> LoginAsync() { IsConnected = false; if (!IsInitialized) { throw new InvalidOperationException("Microsoft OneDrive not initialized."); } string resourceEndpointUri = null; if (_accountProviderType == AccountProviderType.Adal) { DiscoveryService discoveryService = null; DiscoverySettings discoverySettings = DiscoverySettings.Load(); if (discoverySettings == null) { // For OneDrive for business only var authDiscoveryResult = await OneDriveAuthenticationHelper.AuthenticateAdalUserForDiscoveryAsync(AppClientId); discoveryService = await OneDriveAuthenticationHelper.GetUserServiceResource(authDiscoveryResult); discoverySettings = new DiscoverySettings { ServiceEndpointUri = discoveryService.ServiceEndpointUri, ServiceResourceId = discoveryService.ServiceResourceId }; discoverySettings.Save(); } OneDriveAuthenticationHelper.ResourceUri = discoverySettings.ServiceResourceId; _accountProvider = OneDriveAuthenticationHelper.CreateAdalAuthenticationProvider(AppClientId); await OneDriveAuthenticationHelper.AuthenticateAdalUserAsync(true); resourceEndpointUri = discoverySettings.ServiceEndpointUri; } else if (_accountProviderType == AccountProviderType.Msa) { OneDriveAuthenticationHelper.ResourceUri = "https://api.onedrive.com/v1.0"; _accountProvider = OneDriveAuthenticationHelper.CreateMSAAuthenticationProvider(AppClientId, Scopes); await((MsaAuthenticationProvider)OneDriveAuthenticationHelper.AuthenticationProvider).RestoreMostRecentFromCacheOrAuthenticateUserAsync(); resourceEndpointUri = OneDriveAuthenticationHelper.ResourceUri; } else if (_accountProviderType == AccountProviderType.OnlineId) { OneDriveAuthenticationHelper.ResourceUri = "https://api.onedrive.com/v1.0"; _accountProvider = new OnlineIdAuthenticationProvider(Scopes); await((MsaAuthenticationProvider)_accountProvider).RestoreMostRecentFromCacheOrAuthenticateUserAsync(); resourceEndpointUri = OneDriveAuthenticationHelper.ResourceUri; } _oneDriveProvider = new OneDriveClient(resourceEndpointUri, _accountProvider); IsConnected = true; return(IsConnected); }
/// <summary> /// Logout the current user /// </summary> /// <returns>success or failure</returns> public override async Task LogoutAsync() { if (!IsInitialized) { throw new InvalidOperationException("Microsoft OneDrive not initialized."); } if (_accountProvider != null) { if (_accountProviderType == AccountProviderType.OnlineId || _accountProviderType == AccountProviderType.Msa) { await((MsaAuthenticationProvider)_accountProvider).SignOutAsync(); } else if (_accountProviderType == AccountProviderType.Adal) { OneDriveAuthenticationHelper.AzureAdContext.TokenCache.Clear(); DiscoverySettings.Clear(); UserInfoSettings.Clear(); } } }