示例#1
0
        private static ClientCredentials RegisterDevice(Guid applicationId, Uri issuerUri, LiveDevice device)
        {
            var environment = DiscoverEnvironmentInternal(issuerUri);

            var request = new DeviceRegistrationRequest(applicationId, device);

            var url = string.Format(CultureInfo.InvariantCulture, LiveIdConstants.RegistrationEndpointUriFormat,
                                    environment.HostName);

            var response = ExecuteRegistrationRequest(url, request);

            if (!response.IsSuccess)
            {
                var throwException = true;
                if (DeviceRegistrationErrorCode.DeviceAlreadyExists == response.Error.RegistrationErrorCode)
                {
                    if (!PersistToFile)
                    {
                        //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.
                        return(device.User.ToClientCredentials());
                    }
                    else if (PersistIfDeviceAlreadyExists)
                    {
                        // This flag indicates that the
                        throwException = false;
                    }
                }

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

            if (PersistToFile || PersistIfDeviceAlreadyExists)
            {
                WriteDevice(environment, device);
            }

            return(device.User.ToClientCredentials());
        }
        public DeviceRegistrationRequest(Guid applicationId, LiveDevice device)
            : this()
        {
            if (null == device)
            {
                throw new ArgumentNullException("device");
            }

            ClientInfo = new DeviceRegistrationClientInfo { ApplicationId = applicationId, Version = "1.0" };
            Authentication = new DeviceRegistrationAuthentication
            {
                MemberName = device.User.DeviceId,
                Password = device.User.DecryptedPassword
            };
        }