如何使用graph.facebook.com/me/accounts中的页面列表

时间:2012-01-31 10:31:26

标签: facebook json .net-4.0 facebook-c#-sdk webforms

https://graph.facebook.com/me/accounts?access_token=USERS_AUTH_TOKEN 

返回用户具有管理状态的页面列表(采用JSON格式)。

我想在下拉列表中列出所有页面,并让用户选择他想要使用的Facebook页面(在我的webapp上),这样我就可以获得该facebook页面的特定访问令牌。

我的问题是 - 最简单,最好的方法是什么。我以前从未使用过JSON,但我想通过facebook-sdk这样做非常容易。

2 个答案:

答案 0 :(得分:1)

由于您使用的是C#SDK,只需获取对象数组并使用pageId作为键将值转换为IList<IDictionary>()数组,值为页面名称。

这不是完全可编译的,但你明白了:

private void IList<IDictionary<long,string>> ConvertToList(dynamic meAccounts)
{

  foreach(var acc in meAccounts.data)
  {
    yield return new Dictionary((long)acc.id, (string)acc.name);
  }

{

答案 1 :(得分:0)

好的想出办法。但我不知道是正确的方式还是最优的方式。 非常喜欢投入。

 [DataContract]
 internal class FacebookObj
 {
    [DataMember]
    public List<FacebookAccount> data;
    [DataMember]
    public FacebookNext paging;
 }   

    [DataContract]
    internal class FacebookAccount
    {
        [DataMember]
        public string name;
        [DataMember]
        public string category;
        [DataMember]
        public string id;
        [DataMember]
        public string access_token;
    }

    [DataContract]
    internal class FacebookNext
    {
        [DataMember]
        public string next;
    }

public void ShowPages(string authToken) {

 WebRequest webRequest = WebRequest.Create("https://graph.facebook.com/me/accounts?access_token=" + authToken);

            WebResponse webResponse = webRequest.GetResponse();

            Stream sr = webResponse.GetResponseStream();

            if (sr != null)
            {
                jsonSer = new DataContractJsonSerializer(typeof(FacebookObj));
                FacebookObj o = (FacebookObj)jsonSer.ReadObject(sr2);

                foreach (FacebookAccount s in o.data)
                {
                    //Do stuff
                    Response.Write(s.id + " - " + s.name + "<br />");
                }



            }
}