/// <summary> /// Sends a token request. /// </summary> /// <param name="client">The client.</param> /// <param name="request">The request.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns></returns> public static async Task <TokenResponse> RequestTokenAsync(this HttpMessageInvoker client, TokenRequest request, CancellationToken cancellationToken = default) { var clone = request.Clone(); if (!clone.Parameters.ContainsKey(OidcConstants.TokenRequest.GrantType)) { clone.Parameters.AddRequired(OidcConstants.TokenRequest.GrantType, request.GrantType); } return(await client.RequestTokenAsync(clone, cancellationToken).ConfigureAwait()); }