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); }
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); }