Пример #1
0
        private async Task <Token> RefreshToken(OAuthUserCredential user, string refreshToken)
        {
            Token token = null;

            var payload = new Dictionary <string, string>
            {
                { "client_id", user.ClientId },
                { "client_secret", user.ClientSecret },
                { "refresh_token", refreshToken },
                { "grant_type", "refresh_token" }
            };

            var content = new FormUrlEncodedContent(payload);

            var client   = _clientFactory.CreateClient();
            var response = await client.PostAsync(user.TokenUri, content);

            response.EnsureSuccessStatusCode();

            if (response.IsSuccessStatusCode)
            {
                var jsonResponse = await response.Content.ReadAsStringAsync();

                token = JsonSerializer.Deserialize <Token>(jsonResponse);
                token.RefreshToken = refreshToken;

                var jsonString = JsonSerializer.Serialize(token);

                string fileName = System.IO.Path.Combine(_hostingEnvironment.ContentRootPath, TOKEN_FILE);
                await System.IO.File.WriteAllTextAsync(fileName, jsonString, Encoding.UTF8);
            }

            return(token);
        }
Пример #2
0
        private async Task <TokenResponse> FetchToken(OAuthUserCredential user)
        {
            var token = JsonSerializer.Deserialize <Token>(System.IO.File.ReadAllText(TOKEN_FILE));

            var isValid = await IsValid(token.AccessToken);

            if (!isValid)
            {
                token = await RefreshToken(user, token.RefreshToken);
            }

            var tokenResponse = new TokenResponse
            {
                AccessToken  = token.AccessToken,
                RefreshToken = token.RefreshToken,
                Scope        = token.Scope,
                TokenType    = token.TokenType
            };

            return(tokenResponse);
        }