internal static async Task <MobileConnectStatus> RevokeToken(IAuthenticationService authentication, string token, string tokenTypeHint, DiscoveryResponse discoveryResponse, MobileConnectConfig config) { Validate.RejectNull(discoveryResponse, "discoveryResponse"); Validate.RejectNullOrEmpty(token, "token"); string revokeTokenUrl = discoveryResponse.OperatorUrls.RevokeTokenUrl; var notSupported = IsSupported(revokeTokenUrl, "Revoke", discoveryResponse.ProviderMetadata?.Issuer); if (notSupported != null) { return(notSupported); } string clientId = discoveryResponse.ResponseData.response.client_id; string clientSecret = discoveryResponse.ResponseData.response.client_secret; try { var response = await authentication.RevokeTokenAsync(clientId, clientSecret, revokeTokenUrl, token, tokenTypeHint); return(MobileConnectStatus.TokenRevoked(response)); } catch (Exception e) { Log.Error(() => $"RevokeToken failed", e); return(MobileConnectStatus.Error(ErrorCodes.Unknown, "Revoke token error", e)); } }