/// <summary> /// Tries to check if the user is logged in without prompting to login. /// </summary> /// <returns>A <see cref="Task"/> representing the asynchronous operation.</returns> public async Task TrySilentSignInAsync() { var account = (await Client.GetAccountsAsync()).FirstOrDefault(); if (account == null) { // No accounts State = ProviderState.SignedOut; } else { try { // Try and sign-in // TODO: can we use empty scopes? var result = await Client.AcquireTokenSilent(new string[] { string.Empty }, account).ExecuteAsync(); if (!string.IsNullOrWhiteSpace(result.AccessToken)) { State = ProviderState.SignedIn; } else { State = ProviderState.SignedOut; } } catch (MsalUiRequiredException) { await LoginAsync(); } catch (Exception) { State = ProviderState.SignedOut; } } }
public virtual async Task <AuthenticationResult> AcquireTokenSilentAsync(string[] scopes, IAccount account, bool async, CancellationToken cancellationToken) { await EnsureInitializedAsync(async).ConfigureAwait(false); return(await Client.AcquireTokenSilent(scopes, account).ExecuteAsync(async, cancellationToken).ConfigureAwait(false)); }