public FoursquareController(IProvideUserConfiguration configuration, Func<FoursquareLoginCommand> foursquareLoginCommandAccessor, IThreeBytesTicketService ticketService, IFoursquareClient foursquareClient, IOAuthUserService service)
        {
            if (configuration == null)
                throw new ArgumentNullException("configuration");

            this.configuration = configuration;
            this.foursquareLoginCommandAccessor = foursquareLoginCommandAccessor;
            this.ticketService = ticketService;
            this.foursquareClient = foursquareClient;
            this.service = service;
        }
        public FoursquareLoginCommand(IOAuthUserService service, IProvideUserConfiguration configuration, Func<RegisterExternalUserPreCommand> registerExternalUserPreCommandAccessor, IFoursquareClient foursquareClient, Func<LinkExistingUserToExternalProviderPreCommand> linkExistingUserToExternalProviderPreCommandAccessor)
        {
            if (service == null)
                throw new ArgumentNullException("service");

            if (configuration == null)
                throw new ArgumentNullException("configuration");

            this.service = service;
            this.configuration = configuration;
            this.registerExternalUserPreCommandAccessor = registerExternalUserPreCommandAccessor;
            this.foursquareClient = foursquareClient;
            this.linkExistingUserToExternalProviderPreCommandAccessor = linkExistingUserToExternalProviderPreCommandAccessor;
        }