Esempio n. 1
0
        /// <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);
        }