public ActionResult Redirect() { ServicePointManager.Expect100Continue = true; ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; // Here we get the Code in the Query String, using that we can get access token var request = Request; string code = Request.QueryString["code"]; if (!string.IsNullOrEmpty(code)) { string reqUrl = FormatRequestUrl(code); // Getting access token, if access token is null, will return to Index page [relogin takes place] GitHubAccessDetails _accessDetails = GetAccessToken(reqUrl); if (_accessDetails.access_token != null) { Session["GitHubToken"] = _accessDetails.access_token; ViewBag.Response = _accessDetails.access_token; return(RedirectToAction("Status")); } else { return(RedirectToAction("Issue")); } } return(RedirectToAction("index", "home")); }
// Formatting the POST URL // Get the access token public GitHubAccessDetails GetAccessToken(string body) { try { using (var client = new HttpClient()) { client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); var request = new HttpRequestMessage(HttpMethod.Post, string.Format("https://github.com/login/oauth/access_token/{0}", body)); HttpResponseMessage response = client.SendAsync(request).Result; if (response.IsSuccessStatusCode) { accessDetails = JsonConvert.DeserializeObject <GitHubAccessDetails>(response.Content.ReadAsStringAsync().Result); return(accessDetails); } } } catch (Exception ex) { ProjectService.logger.Info(DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss") + "\t" + ex.Message + "\t" + "\n" + ex.StackTrace + "\n"); } return(new GitHubAccessDetails()); }