0

Facebook C# SDK ページの Windows Phone サンプルを使用してこれを理解しようとしましたが、うまくいきませんでした。

メインコードは次のとおりです。

private void GetPages()
    {
        var fb = new FacebookClient(_accessToken);

        fb.GetCompleted += (o, e) =>
        {
            if (e.Error != null)
            {
                Dispatcher.BeginInvoke(() => MessageBox.Show(e.Error.Message));
                return;
            }

            var result = (IDictionary<string, object>)e.GetResultData();
            // returns data and paging from Facebook

            Dispatcher.BeginInvoke(() =>
            {
                foreach (var item in result)
                {
                    // Not sure if/how to use the custom classes here
                    //item has .Key and .Value
                    //.Key = data and .Value contains the key/value pais for each of the pages returned
                }

            });
        };

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

// カスタム クラス

public class FacebookPageCollection
    {
        [JsonProperty(PropertyName = "data")]
        public FacebookPage[] data { get; set; }
        [JsonProperty(PropertyName = "paging")]
        public FacebookPagePaging paging { get; set; }
    }

    public class FacebookPage
    {
        [JsonProperty(PropertyName = "name")]
        public string Name { get; set; }

        [JsonProperty(PropertyName = "access_token")]
        public string AccessToken { get; set; }

        [JsonProperty(PropertyName = "category")]
        public string Category { get; set; }

        [JsonProperty(PropertyName = "id")]
        public string Id { get; set; }
    }

    public class FacebookPagePaging
    {
        [JsonProperty(PropertyName = "previous")]
        public Uri previous { get; set; }

        [JsonProperty(PropertyName = "next")]
        public Uri next { get; set; }
    }

これは、変数「result」が返すものです: {"data":[{"name":"value1","access_token":"value2","category":"value3","id":"value4"," perms":["ADMINISTER","EDIT_PROFILE","CREATE_CONTENT","MODERATE_CONTENT","CREATE_ADS","BASIC_ADMIN"]},{"name":"value1","access_token":"value2","category" :"value3","id":"value4","perms":["ADMINISTER","EDIT_PROFILE","CREATE_CONTENT","MODERATE_CONTENT","CREATE_ADS","BASIC_ADMIN"]}],"ページング":{ "次":"URL"}}

私がやりたいのは、各ページの詳細を取得して保存することです。

私はこれを理解しようとしており、ここや他の場所で他の多くの投稿を見てきました. 私はそれを理解するのに十分な経験がありません。

どんな助けでも大歓迎です。

ありがとうございました。スリ

4

1 に答える 1

1

これは、fb c#sdkでjson応答を操作する方法を理解するための秘訣です。

これがJavascriptJSONとC#JSONの間のマッピングです。(JSON.orgにあるJSON仕様の一部ではないため、DateTimeと別の複雑な.netオブジェクトがないことに注意してください)

JsonObject => keyvalue pairs => IDictionary<string, object> / IDictinary<string, dynamic>
JsonArray => array => IList<object> / IList<dynamic>
string => string
number => long/decimal
boolean => bool

実際のマッピング方法は次のとおりです。

var result = (IDictionary<string, object>)e.GetResultData();
var data = (IList<object>)result["data"];
foreach(var act in data) {
    var account = (IDictionary<string,object>) act;
    var name = (string)account["name"];
    var accessToken = (string)account["access_token"];
    var id = (string)account["id"];

    // normalize to IList<string> permissions, so it is easier to work without casting.
    var permissions = ((IList<object>)account["perms"]).Select(x => (string)x).ToList();
}
于 2012-10-07T21:06:06.743 に答える