/// <summary> /// GetTokenByCode /// </summary> /// <param name="url"></param> /// <param name="postData"></param> /// <returns></returns> private async Task <GoogleTokenResponse> GetTokenByCode(string url, GoogleTokenRequest postData) { var result = new GoogleTokenResponse(); var keyValues = new List <KeyValuePair <string, string> >(); keyValues.Add(new KeyValuePair <string, string>("code", postData.Code)); keyValues.Add(new KeyValuePair <string, string>("client_id", postData.ClientId)); keyValues.Add(new KeyValuePair <string, string>("client_secret", postData.ClientSecret)); keyValues.Add(new KeyValuePair <string, string>("redirect_uri", postData.RedirectUri)); keyValues.Add(new KeyValuePair <string, string>("grant_type", "authorization_code")); HttpContent cont = new FormUrlEncodedContent(keyValues); using (HttpClient client = new HttpClient()) { using (HttpResponseMessage response = await client.PostAsync(url, cont)) { using (HttpContent content = response.Content) { string data = await content.ReadAsStringAsync(); if (!string.IsNullOrWhiteSpace(data)) { if (data.Contains("error")) { result.ErrorMessage = data; } else { result = JsonToObject.FromJson <GoogleTokenResponse>(data); } } } } } return(result); }