FBRequest: Почему не разрешены ответы нетекстового MIME-типа? (SDK для iOS)

Допустим, с помощью Facebook iOS SDK я выполняю запрос графа для изображения профиля пользователя:

[FBRequest requestForGraphPath:@"me/picture"]

Я получу эту ошибку:

Response is a non-text MIME type; endpoints that return images and other binary data should be fetched using `NSURLRequest` and `NSURLConnection`.

Что стоит за этим? Написание запроса вручную заняло всего минуту, но почему эта распространенная задача не включена в SDK Facebook для iOS или я что-то упустил?

Просматривая репозиторий iOS SDK Facebook на Github, мы видим это в FBRequestConnection.m:

if (!error && [response.MIMEType hasPrefix:@"image"]) {
        error = [self errorWithCode:FBErrorNonTextMimeTypeReturned
                         statusCode:0
                 parsedJSONResponse:nil
                         innerError:nil
                            message:@"Response is a non-text MIME type; endpoints that return images and other "
                                    @"binary data should be fetched using NSURLRequest and NSURLConnection"];
    }

Если я правильно понимаю, FBRequestConnection получает ответ, который я хочу (то есть изображение профиля), а ЗАТЕМ говорит мне, что я не могу его получить. Что дразнить. Зачем делать запрос в первую очередь?

Есть комментарии по этому поводу?


person Chris    schedule 19.10.2012    source источник


Ответы (2)


Для большого изображения

me?fields=picture.type(large)

См. Изменение API-интерфейса Facebook Graph: тип изображения (размер) больше не работает?

person Evan Lin    schedule 28.12.2012

Решение состоит в том, чтобы запросить конкретное поле вместо изображения (здесь: Facebook Graph API не предоставляет данные изображения)

Так что используйте

[FBRequest requestForGraphPath:@"me?fields=picture"]

Это должно работать

person Swissdude    schedule 26.10.2012
comment
Как вы получаете изображение из данных, которые возвращаются из этого? Я получаю большой кусок фигурных скобок и прочего, и не получается просто попытаться сформировать из него словарь... Я получаю что-то вроде следующего: ( { body = { id = 100002899999999; picture = { data = { is_silhouette = 0; url = profile.ak.fbcdn.net/hprofile- ak-snc6/; }; }; }; код = 200; } ) - person Mark S; 12.12.2012
comment
Неважно, я понял. Но я все еще не совсем уверен, как получить большую картинку вместо маленькой. - person Mark S; 15.12.2012