Как десериализовать JSON из API Graph Facebook? - PullRequest
1 голос
/ 16 июля 2010

Итак, я пытаюсь десериализовать JSON, возвращенный из вызова OAuth-токена Graph API.

JSON выглядит так:

"[{\" access_token \ ": \" bunchofjsondatablahblah "\ "истекает \": 9999}]"

Я пытаюсь десериализовать его (используя класс DataContractJsonSerializer) в этот объект:

[DataContract]
internal class FacebookOAuthToken
{
     [DataMember]
     internal string access_token;

     [DataMember]
     internal string expires;
}

Вот как я (пытаюсь) это сделать:

FacebookOAuthToken token;
using (Stream responseStream = (response.GetReponseStream()))
{
   DataContractJsonSerializer json = new DataContractJsonSerializer(typeof(FacebookOAuthToken));
   token = (FacebookOAuthToken)json.ReadObject(responseStream);
}

Этот метод основан на этой статье из MSDN.

Однако свойства token всегда равны нулю.

Принимая во внимание, что если я делаю responseStream.ReadToEnd(), все в порядке (возвращает вышеуказанный JSON) - это означает, что это не проблема с фактическим запросом / ответом HTTP, я просто не десериализую его должным образом.

Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 16 июля 2010

Если я правильно интерпретирую строку JSON, она представляет собой набор элементов FacebookOAuthToken с одним экземпляром в нем, а не с одним токеном.

Возможно, именно поэтому ваша десериализация не сработала.

0 голосов
/ 16 июля 2010

Хорошо, так получается, что я использовал неправильный URL API Graph (кажется так).

Это проблема с документацией API API Facebook, повсеместно и разными потоками (google, stackпереполнение) говорят по-разному, как делать вещи.

Я изменил на URL https://graph.facebook.com/oauth/access_token?{0} вместо https://graph.facebook.com/oauth/exchange_sessions?{0}, и теперь он возвращает базовую строку (не-JSON).

Так что его вообще не нужно сериализовать.

Тем не менее, у некоторых людей может возникнуть та же проблема, что и у меня выше, в этом случае я не уверен, как ее решить.

IСейчас я использую метод, определенный здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...