Example #1
0
        private async Task RefreshCredentialsAsync(GoogleCredentials credentials)
        {
            var clientId     = apiKeyRepository.GetClientId();
            var clientSecret = apiKeyRepository.GetClientSecret();

            var url = new StringBuilder();

            url.Append("https://oauth2.googleapis.com/token?");
            url.Append($"client_id={clientId}&");
            url.Append($"client_secret={clientSecret}&");
            url.Append($"refresh_token={UrlEncode(credentials.RefreshToken)}&");
            url.Append($"grant_type=refresh_token");

            var responseMessage = await httpClient.PostAsync(url.ToString(), null);

            responseMessage.EnsureSuccessStatusCode();
            var response = JsonConvert.DeserializeObject <JObject>(
                await responseMessage.Content.ReadAsStringAsync()
                );

            var accessToken   = response.Value <string>("access_token");
            var expirySeconds = response.Value <int>("expires_in");
            var expiry        = DateTime.Now + TimeSpan.FromSeconds(expirySeconds - 5);

            credentials.AccessToken       = accessToken;
            credentials.AccessTokenExpiry = expiry;
        }