/// <summary>
        /// Request generic list data from service provider based upon a given config / query.
        /// </summary>
        /// <typeparam name="T">Strong type of model.</typeparam>
        /// <param name="config">FacebookDataConfig instance.</param>
        /// <param name="pageSize">Upper limit of records to return.</param>
        /// <param name="maxPages">Upper limit of pages to return.</param>
        /// <param name="fields">A comma separated string of required fields, which will have strongly typed representation in the model passed in.</param>
        /// <returns>Strongly typed list of data returned from the service.</returns>
        public async Task <IncrementalLoadingCollection <FacebookRequestSource <T>, T> > RequestAsync <T>(FacebookDataConfig config, int pageSize, int maxPages, string fields = "id,message,from,created_time,link,full_picture")
        {
            if (Provider.LoggedIn)
            {
                var requestSource = new FacebookRequestSource <T>(config, fields, pageSize.ToString(), maxPages);

                return(new IncrementalLoadingCollection <FacebookRequestSource <T>, T>(requestSource));
            }

            var isLoggedIn = await LoginAsync();

            if (isLoggedIn)
            {
                return(await RequestAsync <T>(config, pageSize, maxPages, fields));
            }

            return(null);
        }
        /// <summary>
        /// Request list data from service provider based upon a given config / query.
        /// </summary>
        /// <typeparam name="T">Strong type of model.</typeparam>
        /// <param name="config">FacebookDataConfig instance.</param>
        /// <param name="maxRecords">Upper limit of records to return.</param>
        /// <param name="fields">A comma separated string of required fields, which will have strongly typed representation in the model passed in.</param>
        /// <returns>Strongly typed list of data returned from the service.</returns>
        public async Task <List <T> > RequestAsync <T>(FacebookDataConfig config, int maxRecords = 20, string fields = "id,message,from,created_time,link,full_picture")
        {
            if (Provider.LoggedIn)
            {
                var requestSource = new FacebookRequestSource <T>(config, fields, maxRecords.ToString(), 1);

                var list = await requestSource.GetPagedItemsAsync(0, maxRecords);

                return(new List <T>(list));
            }

            var isLoggedIn = await LoginAsync();

            if (isLoggedIn)
            {
                return(await RequestAsync <T>(config, maxRecords, fields));
            }

            return(null);
        }