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()); }