public async Task Get(string provider)
        {
            var authorizationFlow = await AuthorizationFlowProvider.GetAuthorizationFlow(provider);

            var redirectUri = new UriBuilder(HttpContext.Request.GetUri())
            {
                Path = $"/api/swagger/{provider}/token"
            };

            authorizationFlow.OnAuthorization(
                "code", null, redirectUri.ToString(), Guid.NewGuid().ToString()
                );
        }
        public async Task GetAuthorization(
            string client_id,
            string provider, string response_type,
            string scope, string redirect_uri, string state)
        {
            var authorizationFlow = await AuthorizationFlowProvider.GetAuthorizationFlow(provider);

            string response_type_definitive, redirect_uri_definitive;

            switch (response_type)
            {
            case "code":
                response_type_definitive = response_type;
                redirect_uri_definitive  = $"{redirect_uri}";
                break;

            case "token":
                var parentRedirectUri = new UriBuilder(HttpContext.Request.GetUri())
                {
                    Path  = $"/api/swagger/{provider}/token",
                    Query = null,
                };

                response_type_definitive = "code";
                redirect_uri_definitive  = $"{parentRedirectUri}?redirect_uri={redirect_uri}";
                break;

            default:
                throw new NotSupportedException($"response_type={response_type}");
            }

            if (!string.IsNullOrWhiteSpace(state))
            {
                ClientByStateDictionary.Add(state, client_id);
            }

            authorizationFlow.OnAuthorization(
                response_type_definitive, scope,
                redirect_uri_definitive,
                state
                );
        }