Как использовать список страниц из graph.facebook.com/me/accounts - PullRequest
0 голосов
/ 31 января 2012
https://graph.facebook.com/me/accounts?access_token=USERS_AUTH_TOKEN 

возвращает список страниц, в которых пользователь имеет статус администратора (в формате JSON).

Я хотел бы перечислить все страницы в раскрывающемся списке и заставить пользователя выбрать, какую страницу facebook он хочет использовать (в моем веб-приложении), чтобы я мог получить специальный токен доступа для этой страницы Facebook.

Мой вопрос - какой самый простой и лучший способ сделать это. Я никогда раньше не работал с JSON, но, думаю, довольно просто было сделать это через facebook-sdk.

Ответы [ 2 ]

1 голос
/ 31 января 2012

Поскольку вы используете C # SDK, просто возьмите массив объектов и преобразуйте их в массив 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);
  }

{
0 голосов
/ 31 января 2012

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

 [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 />");
                }



            }
}
...