Как добраться до «меня» Json в Facebook c # SDK с WP7 и silverlight - PullRequest
0 голосов
/ 21 мая 2011

Я новичок в Facebook C # SDK, и я пытаюсь что-то сделать для Windows Phone 7, но функции этой функции ограничены silverlight, потому что 'Silverlight должен иметь только асинхронные вызовы', я действительно пытаюсь сделать это:

// Using IDictionary<string, object> (.Net 3.5, .Net 4.0, WP7)
var client = new FacebookClient();
var me = (IDicationary<string,object>)client.Get("me");
string firstName = (string)me["first_name"];
string lastName = (string)me["last_name"];
string email = (string)me["email"];

как в: http://facebooksdk.codeplex.com/wikipage?title=Code%20Examples&referringTitle=Documentation

но я не могу использовать метод get ... плохо объясню себя лучше! Я хочу сохранить информацию, там есть решение:

_fbClient.GetCompleted +=
    (o, e) =>
    {
        if (e.Error == null)
        {
            var result = (IDictionary<string, object>)e.GetResultData();
            Dispatcher.BeginInvoke(() => MyData.ItemsSource = result);

        }
        else
        {
            MessageBox.Show(e.Error.Message);
        }
    };
_fbClient.GetAsync("/me");

проблема в том, что нет никакого доступа к MyData.ItemsSource, мне нужно получить доступ к каждому полю или спросить каждое поле самостоятельно ... какие-либо мысли?

этот парень мог бы иметьв каком-то направлении: http://blog.prabir.me/post/Facebook-CSharp-SDK-Batch-Requests.aspx

Ответы [ 2 ]

1 голос
/ 25 мая 2011
var result = (IDictionary<string, object>)e.GetResultData();
var fname = (string)result["first_name"];
var lname = (string)result["last_name"];

Если это объект json, приведите его к IDictionary , если массив приведен к IList . если строка преобразует его в строку, если числа приводят его к удвоению и т. д.

0 голосов
/ 21 мая 2011

Прямо из образца Silverlight:

    fb.GetCompleted +=
    (o, e) =>
    {
        if (e.Error == null)
        {
            var result = (IDictionary<string, object>)e.GetResultData();
            Dispatcher.BeginInvoke(() => InfoBox.ItemsSource = result);
        }
        else
        {
            // TODO: Need to let the user know there was an error
        }
    };

    fb.GetAsync("/me");
...