Изображение альбома Facebook, используя Facebook C # SDK - PullRequest
0 голосов
/ 18 апреля 2011

Я пытаюсь получить изображение альбома из Facebook с помощью SDK facebook C # в приложении Silverlight со следующим кодом:

        FacebookClient client = new FacebookClient(this.Profile.AccessToken);
        client.GetAsync(string.Format("/{0}/picture?type=small", this.ID));
        client.GetCompleted += (s, e) =>
        {
            dynamic result = e;
        };

Где this.ID - идентификатор альбома, но яэта ошибка: неожиданный символ при синтаксическом анализе значения: �.Строка 1, позиция 1. из метода DeserializeObject в JsonSerializer.Проблема в том, что facebook не возвращает данные json с помощью imge uri или чего-то в этом роде, но они фактически возвращают само изображение в двоичных данных.У кого-нибудь есть идеи, как я могу справиться с этим результатом или просто передать Ури изображение?У меня есть обходной путь для этого, используя этот код:

        var request = WebRequest.Create(string.Format("https://graph.facebook.com/{0}/picture?access_token={1}", this.ID, this.Profile.AccessToken));
        request.BeginGetResponse(ar =>
        {
            using (var response = ((WebRequest)ar.AsyncState).EndGetResponse(ar))
            {
                Deployment.Current.Dispatcher.BeginInvoke(() =>
                {
                    this.Picture = new BitmapImage(new Uri(response.ResponseUri.AbsoluteUri));
                }
                );
            }
        }, request);

Но я действительно хотел использовать только Facebook C # SDK для получения данных.использовать:

        FacebookClient client = new FacebookClient(this.Profile.AccessToken);
        client.QueryAsync(String.Format("SELECT src_small, src_big, src FROM photo WHERE pid IN (SELECT cover_pid FROM album WHERE object_id={0})", this.ID));
        client.GetCompleted += (s, e) =>
        {
            dynamic result = e.GetResultData();

            Deployment.Current.Dispatcher.BeginInvoke(() => this.Picture = result[0].src_small);
        };

Ответы [ 2 ]

1 голос
/ 13 июля 2011

Я столкнулся с подобной проблемой. Хотел также использовать Facebook C # SDK. Решил это так:

FacebookClient facebookAlbumClient = new FacebookClient(_albumAccessToken);
dynamic facebookAlbumCover = facebookAlbumClient.Get(string.Format("/{0}?fields=picture&type=thumbnail", (string)facebookAlbum["id"]));

Таким образом, вы получаете массив json, а не картинку

0 голосов
/ 19 апреля 2011

Я думаю, что нашел приемлемое решение для моей проблемы.Я просто буду использовать FQL вместо Graph API.Это сделает работу:

        FacebookClient client = new FacebookClient(this.Profile.AccessToken);
        client.QueryAsync(String.Format("SELECT src_small, src_big, src FROM photo WHERE pid IN (SELECT cover_pid FROM album WHERE object_id={0})", this.ID));
        client.GetCompleted += (s, e) =>
        {
            dynamic result = e.GetResultData();

            Deployment.Current.Dispatcher.BeginInvoke(() => this.Picture = result[0].src_small);
        };
...