Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
        }