Facebook c # SDK возвращает меньше результатов, чем оригинальный номер - PullRequest
0 голосов
/ 13 марта 2011

Я получаю фотографии из альбома, и в этом альбоме всего 44 фотографии, но SDK возвращает мне только 25 результатов.Это какое-то ограничение или мы должны попросить следующие 25?Мой код на данный момент:

dynamic photos = app.Get(AlbumList[currentAlbumSelectedIndex].Id + "/photos");

int infoCount = 0;

foreach (dynamic albumPhoto in photos.data)
{
    Classes.MyPhoto photoData = new Classes.MyPhoto();
    photoData.Id = albumPhoto.id;
    if (albumPhoto.name != null && albumPhoto.name.ToString().Length >100)
        photoData.MyPhotoName = albumPhoto.name.ToString().Substring(0, 90) + "...";
    else
        photoData.MyPhotoName = albumPhoto.name;
    byte[] imageBytes = function.GetImageFromUrl(albumPhoto.source);

    Statuslabel.Dispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate()
    {
        if (imageBytes != null)
            photoData.MyPhotoPicture = function.GetBitmapImage(imageBytes);
        System.Windows.Forms.Application.DoEvents();
        Statuslabel.Content = "Getting info of " + infoCount + " / " + photos.data.Count;
        AlbumPhotoList.Add(photoData);

        if (imageAlbumPhotos.Source == null)
        {
            imageAlbumPhotos.Source = AlbumPhotoList[0].MyPhotoPicture;
            labelAlbumPics.Content = AlbumPhotoList[0].MyPhotoName;
            AlbumPictureGetProgress.Visibility = System.Windows.Visibility.Hidden;
        }
        if (currentAlbumDisplayingPicture < AlbumList.Count - 1)
            buttonNextAlbumPic.IsEnabled = true;
    }));

    infoCount++;
}

Ответы [ 2 ]

0 голосов
/ 13 марта 2011

Ну, это не проблема, но это предел, что для поддержания эффективности работы он возвращает только 25 результатов по умолчанию, вы можете запросить столько же результатов. Давая это Offset и limit Значения

не код становится таким

dynamic parameters = new ExpandoObject();
        parameters.limit = 50;
        parameters.offset = 0;

        dynamic friends = app.Get("me/photos",parameters);
0 голосов
/ 13 марта 2011

в вашем примере вы используете вызов метода

app.Get(AlbumList[currentAlbumSelectedIndex].Id + "/photos");

Насколько я знаю, вы должны быть в состоянии передать IDictionary<string, object> в качестве второго параметра. Там вы определяете параметр «смещение».

Я прочитал о параметре смещения в справочнике API Facebook в разделе Чтение> Пейджинг.

Надеюсь, это поможет, Мартин

...