private static ClientCredentials RegisterDevice(Guid applicationId, Uri issuerUri, DeviceUserName userName)
        {
            var text       = DeviceIdManager.DiscoverEnvironment(issuerUri);
            var liveDevice = new LiveDevice
            {
                User    = userName,
                Version = 1
            };
            var registrationRequest        = new DeviceRegistrationRequest(applicationId, liveDevice);
            var deviceRegistrationResponse = DeviceIdManager.ExecuteRegistrationRequest(string.Format(CultureInfo.InvariantCulture, "https://login.live{0}.com/ppsecure/DeviceAddCredential.srf", string.IsNullOrWhiteSpace(text) ? null : ("-" + text)), registrationRequest);

            if (!deviceRegistrationResponse.IsSuccess)
            {
                throw new DeviceRegistrationFailedException((Microsoft.Xrm.Tooling.Connector.DeviceRegistrationErrorCode)deviceRegistrationResponse.Error.RegistrationErrorCode, deviceRegistrationResponse.ErrorSubCode);
            }
            DeviceIdManager.WriteDevice(text, liveDevice);
            return(liveDevice.User.ToClientCredentials());
        }
        /// <summary>
        /// Loads the device's credentials from the file system
        /// </summary>
        /// <param name="issuerUri">URL for the current token issuer</param>
        /// <returns>Device Credentials (if set) or null</returns>
        /// <remarks>
        /// The issuerUri can be retrieved from the IServiceConfiguration interface's CurrentIssuer property.
        /// </remarks>
        public static ClientCredentials LoadDeviceCredentials(Uri issuerUri)
        {
            var liveDevice = DeviceIdManager.ReadExistingDevice(DeviceIdManager.DiscoverEnvironment(issuerUri));

            return(liveDevice?.User?.ToClientCredentials());
        }