예제 #1
0
        private static DeviceUserName GenerateDeviceUserName()
        {
            DeviceUserName userName = new DeviceUserName();

            userName.DeviceName        = GenerateRandomString(LiveIdConstants.ValidDeviceNameCharacters, MaxDeviceNameLength);
            userName.DecryptedPassword = GenerateRandomString(LiveIdConstants.ValidDevicePasswordCharacters, MaxDevicePasswordLength);
            return(userName);
        }
예제 #2
0
        private static ClientCredentials RegisterDevice(Guid applicationId, Uri issuerUri, DeviceUserName userName)
        {
            string     environment = DiscoverEnvironment(issuerUri);
            LiveDevice device      = new LiveDevice()
            {
                User = userName, Version = 1
            };
            DeviceRegistrationRequest request = new DeviceRegistrationRequest(applicationId, device);
            string url = string.Format(CultureInfo.InvariantCulture, LiveIdConstants.RegistrationEndpointUriFormat, string.IsNullOrEmpty(environment) ? null : "-" + environment);
            DeviceRegistrationResponse response = ExecuteRegistrationRequest(url, request);

            if (!response.IsSuccess)
            {
                //If the file is not persisted, the registration will always occur (since the credentials are not
                //persisted to the disk. However, the credentials may already exist. To avoid an exception being continually
                //processed by the calling user, DeviceAlreadyExists will be ignored if the credentials are not persisted to the disk.
                if (DeviceRegistrationErrorCode.DeviceAlreadyExists == response.Error.RegistrationErrorCode)
                {
                    return(device.User.ToClientCredentials());
                }

                throw new DeviceRegistrationFailedException(response.Error.RegistrationErrorCode, response.ErrorSubCode);
            }

            return(device.User.ToClientCredentials());
        }