private async ValueTask <AccessToken> GetTokenImplAsync(bool async, TokenRequestContext requestContext, CancellationToken cancellationToken) { using CredentialDiagnosticScope scope = Pipeline.StartGetTokenScope($"{nameof(DeviceCodeCredential)}.{nameof(GetToken)}", requestContext); try { Exception inner = null; if (Record != null) { try { AuthenticationResult result = await Client.AcquireTokenSilentAsync(requestContext.Scopes, (AuthenticationAccount)Record, async, cancellationToken).ConfigureAwait(false); return(scope.Succeeded(new AccessToken(result.AccessToken, result.ExpiresOn))); } catch (MsalUiRequiredException e) { inner = e; } } if (DisableAutomaticAuthentication) { throw new AuthenticationRequiredException(AuthenticationRequiredMessage, requestContext, inner); } return(scope.Succeeded(await GetTokenViaDeviceCodeAsync(requestContext.Scopes, async, cancellationToken).ConfigureAwait(false))); } catch (Exception e) { throw scope.FailWrapAndThrow(e); } }
private async ValueTask <AccessToken> GetTokenImplAsync(bool async, TokenRequestContext requestContext, CancellationToken cancellationToken) { using CredentialDiagnosticScope scope = Pipeline.StartGetTokenScope($"{nameof(InteractiveBrowserCredential)}.{nameof(GetToken)}", requestContext); try { Exception inner = null; if (Record != null) { try { var tenantId = TenantIdResolver.Resolve(_tenantId ?? Record.TenantId, requestContext, _allowMultiTenantAuthentication); AuthenticationResult result = await Client .AcquireTokenSilentAsync(requestContext.Scopes, requestContext.Claims, Record, tenantId, async, cancellationToken) .ConfigureAwait(false); return(scope.Succeeded(new AccessToken(result.AccessToken, result.ExpiresOn))); } catch (MsalUiRequiredException e) { inner = e; } } if (DisableAutomaticAuthentication) { throw new AuthenticationRequiredException(AuthenticationRequiredMessage, requestContext, inner); } return(scope.Succeeded(await GetTokenViaBrowserLoginAsync(requestContext, async, cancellationToken).ConfigureAwait(false))); } catch (Exception e) { throw scope.FailWrapAndThrow(e); } }