Exemplo n.º 1
0
        /// <summary>
        /// Get the latest sales agent token given the AD Authorization Token
        /// </summary>
        /// <param name="adAuthorizationToken">AD Authorization Token</param>
        /// <returns>Latest sales agent token</returns>
        public static AuthorizationToken GetSA_Token(AuthorizationToken adAuthorizationToken)
        {
            CSPTokenResponse   saToken = GetSA_Token(adAuthorizationToken.AccessToken);
            AuthorizationToken saAuthorizationToken = new AuthorizationToken(saToken.access_token, Convert.ToInt64(saToken.expires_in));

            return(saAuthorizationToken);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Given the ad token this method retrieves the sales agent token for accessing any of the partner apis
        /// </summary>
        /// <param name="adToken">this is the access_token we get from AD</param>
        /// <returns>the sales agent token object which contains access_token, expiration duration</returns>
        private static CSPTokenResponse GetSA_Token(string adToken)
        {
            CSPTokenResponse result = null;

            var request = (HttpWebRequest)WebRequest.Create("https://api.cp.microsoft.com/my-org/tokens");

            request.Method      = "POST";
            request.ContentType = "application/x-www-form-urlencoded";
            request.Accept      = "application/json";

            request.Headers.Add("api-version", "2015-03-31");
            request.Headers.Add("x-ms-correlation-id", Guid.NewGuid().ToString());
            request.Headers.Add("Authorization", "Bearer " + adToken);
            string content = "grant_type=client_credentials";

            using (var writer = new StreamWriter(request.GetRequestStream()))
            {
                writer.Write(content);
            }

            try
            {
                //Utilities.PrintWebRequest(request, content);

                var response = request.GetResponse();
                using (var reader = new StreamReader(response.GetResponseStream()))
                {
                    var responseContent = reader.ReadToEnd();
                    result = JsonConvert.DeserializeObject <CSPTokenResponse>(responseContent);
                    //Utilities.PrintWebResponse((HttpWebResponse)response, "<snipped>");
                }
            }
            catch (WebException webException)
            {
                using (var reader = new StreamReader(webException.Response.GetResponseStream()))
                {
                    var responseContent = reader.ReadToEnd();
                    Utilities.PrintErrorResponse((HttpWebResponse)webException.Response, responseContent);
                }
            }
            return(result);
        }