コード例 #1
0
        /// <summary>
        /// Revoke all access tokens
        /// </summary>
        /// <param name="storeId">Store identifier for which access token should be revoked</param>
        /// <returns>The asynchronous task whose result determines whether tokens are revoked</returns>
        public async Task <bool> RevokeAccessTokensAsync(int storeId)
        {
            try
            {
                var settings = _settingService.LoadSetting <SquarePaymentSettings>(storeId);

                //get response
                var request = new RevokeAccessTokenRequest
                {
                    ApplicationId = settings.ApplicationId,
                    AccessToken   = settings.AccessToken
                };
                var httpRequest = new HttpRequestMessage(HttpMethod.Post, "revoke");
                httpRequest.Headers.Add(HeaderNames.Authorization, $"Client {settings.ApplicationSecret}");
                httpRequest.Content = new StringContent(JsonConvert.SerializeObject(request), Encoding.UTF8, MimeTypes.ApplicationJson);

                var response = await _httpClient.SendAsync(httpRequest);

                //return result
                var responseContent = await response.Content.ReadAsStringAsync();

                var accessTokenResponse = JsonConvert.DeserializeObject <RevokeAccessTokenResponse>(responseContent);
                return(accessTokenResponse?.SuccessfullyRevoked ?? false);
            }
            catch (AggregateException exception)
            {
                //rethrow actual exception
                throw exception.InnerException;
            }
        }
コード例 #2
0
        /// <summary>
        /// Revoke all access tokens
        /// </summary>
        /// <returns>The asynchronous task whose result determines whether tokens are revoked</returns>
        public async Task <bool> RevokeAccessTokensAsync()
        {
            try
            {
                //get response
                var request = new RevokeAccessTokenRequest
                {
                    ApplicationId = _squarePaymentSettings.ApplicationId,
                    AccessToken   = _squarePaymentSettings.AccessToken
                };
                var requestContent = new StringContent(JsonConvert.SerializeObject(request), Encoding.UTF8, MimeTypes.ApplicationJson);
                var response       = await _httpClient.PostAsync("revoke", requestContent);

                //return result
                var responseContent = await response.Content.ReadAsStringAsync();

                var accessTokenResponse = JsonConvert.DeserializeObject <RevokeAccessTokenResponse>(responseContent);
                return(accessTokenResponse?.SuccessfullyRevoked ?? false);
            }
            catch (AggregateException exception)
            {
                //rethrow actual exception
                throw exception.InnerException;
            }
        }
コード例 #3
0
        /// <summary>
        /// Revoke all access tokens
        /// </summary>
        /// <param name="revokeTokenRequest">Request parameters to revoke access token</param>
        /// <returns>True if tokens were successfully revoked; otherwise false</returns>
        public bool RevokeAccessTokens(RevokeAccessTokenRequest revokeTokenRequest)
        {
            //create post data
            var postData = Encoding.Default.GetBytes(JsonConvert.SerializeObject(revokeTokenRequest));

            //create web request
            var serviceUrl = $"{GetOAuthServiceUrl()}/revoke";
            var request    = (HttpWebRequest)WebRequest.Create(serviceUrl);

            request.Method        = WebRequestMethods.Http.Post;
            request.Accept        = "application/json";
            request.ContentType   = "application/json";
            request.ContentLength = postData.Length;
            request.UserAgent     = SquarePaymentDefaults.UserAgent;

            //add authorization header
            request.Headers.Add(HttpRequestHeader.Authorization, $"Client {revokeTokenRequest.ApplicationSecret}");

            //post request
            using (var stream = request.GetRequestStream())
            {
                stream.Write(postData, 0, postData.Length);
            }

            //get response
            var httpResponse = (HttpWebResponse)request.GetResponse();

            using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
            {
                //return received value
                var response = JsonConvert.DeserializeObject <RevokeAccessTokenResponse>(streamReader.ReadToEnd());
                return(response?.SuccessfullyRevoked ?? false);
            }
        }
コード例 #4
0
        public async Task <bool> Logout()
        {
            var token = await GetAccessToken();

            var url        = "https://api.trakt.tv/oauth/revoke";
            var request    = new HttpRequestMessage(HttpMethod.Post, url);
            var revokeBody = new RevokeAccessTokenRequest
            {
                AccessToken  = token,
                ClientId     = _configuration.TraktClientId,
                ClientSecret = _configuration.TraktClientSecret
            };

            request.Content = new StringContent(JsonConvert.SerializeObject(revokeBody), Encoding.UTF8, "application/json");
            var response = await _httpClient.SendAsync(request);

            if (response.IsSuccessStatusCode)
            {
                _tokenRepository.RemoveAccessToken();
                return(true);
            }

            return(false);
        }