public BedrockTokenPair RefreshAccessToken(string refreshToken) { if (string.IsNullOrEmpty(refreshToken)) { throw new ArgumentException("The refresh token is missing."); } try { AccessTokens tokens = GetTokensUsingGET($"{this.RefreshUri}", new Dictionary <string, string> { { "client_id", _clientId }, { "grant_type", "refresh_token" }, { "scope", "service::user.auth.xboxlive.com::MBI_SSL" }, { "redirect_uri", RedirectUri }, { "refresh_token", refreshToken } }); return(new BedrockTokenPair() { AccessToken = tokens.AccessToken, ExpiryTime = DateTime.UtcNow.AddSeconds(tokens.Expiration), RefreshToken = tokens.RefreshToken }); } catch (WebException ex) { Log.Warn("RefreshAccessToken failed likely due to an invalid client ID or refresh token\n" + ex.ToString()); } return(null); }
private static AccessTokens GetTokens(string uri, string body) { AccessTokens tokens = null; var request = (HttpWebRequest)WebRequest.Create(uri); request.Method = "POST"; request.Accept = "application/json"; request.ContentType = "application/x-www-form-urlencoded"; request.ContentLength = body.Length; using (Stream requestStream = request.GetRequestStream()) { StreamWriter writer = new StreamWriter(requestStream); writer.Write(body); writer.Close(); } var response = (HttpWebResponse)request.GetResponse(); using (Stream responseStream = response.GetResponseStream()) { var reader = new StreamReader(responseStream); string json = reader.ReadToEnd(); reader.Close(); tokens = JsonConvert.DeserializeObject(json, typeof(AccessTokens)) as AccessTokens; } return(tokens); }
private static AccessTokens GetTokensUsingGET(string uri, Dictionary <string, string> parameters) { AccessTokens tokens = null; using (var client = GetHttpClient()) { var encodedContent = new FormUrlEncodedContent(parameters); var response = client.PostAsync(uri, encodedContent).Result; var res = response.Content.ReadAsStringAsync().Result; tokens = JsonConvert.DeserializeObject <AccessTokens>(res); } return(tokens); }
private async Task <AccessTokens> GetTokensUsingGET(string uri, Dictionary <string, string> parameters) { AccessTokens tokens = null; var client = GetClient(); { var encodedContent = new FormUrlEncodedContent(parameters); var response = await client.PostAsync(uri, encodedContent); var res = await response.Content.ReadAsStringAsync(); tokens = JsonConvert.DeserializeObject <AccessTokens>(res); } return(tokens); }