private string GetAccessToken()
        {
            string formData = "grant_type=client_credentials";

            byte[] formBytes = Encoding.UTF8.GetBytes(formData);

            _credential = _credentials.GetCredential();
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(credentialRequestURI);

            request.Method = "POST";
            request.Headers.Add("Authorization", _credential.ClientID + " " + _credential.ClientSecret);

            request.ContentType   = "multipart/form-data";
            request.ContentLength = formBytes.Length;
            Stream stream = request.GetRequestStream();

            stream.Write(formBytes, 0, formBytes.Length);

            var response = (HttpWebResponse)request.GetResponse();

            if (response.StatusCode == HttpStatusCode.OK)
            {
                var responseStream = new StreamReader(response.GetResponseStream());
                var jResponse      = JsonConvert.DeserializeObject <JObject>(responseStream.ReadToEnd());
                if (jResponse.ContainsKey("access_token"))
                {
                    return((string)jResponse["access_token"]);
                }
            }
            return(GetAccessToken());
        }