public UserToken GetUserTokenByCode(string sCode, Credential credential) { UserToken MyToken = new UserToken(); string url = credential.token_uri.ToString(); ///-- "https://accounts.google.com/o/oauth2/token"; StringBuilder postDataBuider = new StringBuilder(); postDataBuider.Append("code=" + sCode); // the code for the Google GMAIL.COM postDataBuider.Append("&client_id=" + credential.client_id.ToString()); postDataBuider.Append("&client_secret=" + credential.client_secret.ToString()); postDataBuider.Append("&scope=" + UrlEncodeForGoogle("https://www.googleapis.com/auth/calendar").Replace("%20", "+")); postDataBuider.Append("&redirect_uri=" + credential.redirect_uris[0].ToString()); postDataBuider.Append("&grant_type=authorization_code"); string postDataStr = postDataBuider.ToString(); byte[] postDataBytes = System.Text.Encoding.UTF8.GetBytes(postDataStr); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Accept = "application/json"; request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.ContentLength = postDataBytes.Length; Stream dataStream = request.GetRequestStream(); dataStream.Write(postDataBytes, 0, postDataBytes.Length); dataStream.Close(); string responseStr = ""; try { using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { using (Stream responseStream = response.GetResponseStream()) { using (StreamReader readStream = new StreamReader(responseStream, Encoding.UTF8)) { responseStr = readStream.ReadToEnd(); if (String.Empty == responseStr) { throw new Exception("Response is null or empty"); } else { JObject token = JObject.Parse(responseStr); MyToken.access_token = (token["access_token"]).ToString(); MyToken.expires_in = (token["expires_in"]).ToString(); MyToken.refresh_token = (token["refresh_token"]).ToString(); MyToken.token_type = (token["token_type"]).ToString(); MyToken.Refreshdate = DateTime.Now; } } } } } catch { } return MyToken; }
var
This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)