public static async Task SignOut(OAuth20AuthenticationConfig authConfig, OAuth20AuthResponse authResponse) { HttpRequestMessage revocationRequest = new HttpRequestMessage { Method = HttpMethod.Post, RequestUri = new Uri(authConfig.HttpRequestConfig.RevocationUrl) }; var formKeyValuePairs = OAuth20FormUrlEncodedFactory.CreateUsingRevocation(authConfig, authResponse); revocationRequest.Content = new FormUrlEncodedContent(formKeyValuePairs); AddDefaultHeaders(revocationRequest); var httpClient = GetHttpClient(); var revocationResponse = await httpClient.SendAsync(revocationRequest); var authResponseContent = await revocationResponse.Content.ReadAsStringAsync(); if (revocationResponse.StatusCode != HttpStatusCode.OK) { throw new Exception($"{AutomatonConstants.OAuth20.OAUTH_20} failed to authenticate. Trying to access resource: {revocationRequest.RequestUri}, HttpStatusCode: {revocationResponse.StatusCode}, Reason: {authResponseContent}, Configuration: {JsonConvert.SerializeObject(authConfig)}"); } }
private static HttpContent CreateFormUrlEncodedContent(OAuth20AuthenticationConfig oAuthConfig) { var formKeyValuePairs = OAuth20FormUrlEncodedFactory.CreateUsingGrantType(oAuthConfig.Grant); return(new FormUrlEncodedContent(formKeyValuePairs)); }