How to get the large picture from feed with graph api?

前端 未结 9 1630
灰色年华
灰色年华 2020-12-08 05:14

When loading the Facebook feeds from one page, if a picture exist in the feed, I want to display the large picture.

How can I get with the graph API ? T

9条回答
  •  轮回少年
    2020-12-08 05:45

    After positive comment from @Lachezar Todorov I decided to post my current approach (including paging and using Json.NET ;):

    try
    {
        FacebookClient fbClient = new FacebookClient(HttpContext.Current.Session[SessionFacebookAccessToken].ToString());
    
        JObject posts = JObject.Parse(fbClient.Get(String.Format("/{0}/posts?fields=message,picture,link,attachments", FacebookPageId)).ToString());
        JArray newsItems = (JArray)posts["data"];
    
        List result = new List();
    
        while (newsItems.Count > 0)
        {
            result.AddRange(GetItemsFromJsonData(newsItems));
    
            if (result.Count > MaxNewsItems)
            {
                result.RemoveRange(MaxNewsItems, result.Count - MaxNewsItems);
                break;
            }
    
            JToken paging = posts["paging"];
    
            if (paging != null)
            {
                if (paging["next"] != null)
                {
                    posts = JObject.Parse(fbClient.Get(paging.Value("next")).ToString());
                    newsItems = (JArray)posts["data"];
                }
            }
        }
    
        return result;
    }
    

    And the helper method to retieve individual items:

    private static IEnumerable GetItemsFromJsonData(IEnumerable items)
    {
        List newsItems = new List();
    
        foreach (JToken item in items.Where(item => item["message"] != null))
        {
            NewsItem ni = new NewsItem
            {
                Message = item.Value("message"),
                DateTimeCreation = item.Value("created_time"),
                Link = item.Value("link"),
                Thumbnail = item.Value("picture"),
    
                // http://stackoverflow.com/questions/28319242/simplify-looking-up-nested-json-values-with-json-net/28359155#28359155
                Image = (String)item.SelectToken("attachments.data[0].media.image.src") ?? (String)item.SelectToken("attachments.data[0].subattachments.data[0].media.image.src")
            };
            newsItems.Add(ni);
        }
    
        return newsItems;
    
    }
    

    NewsItem class I use:

    public class NewsItem
    {
      public String Message { get; set; }
      public DateTime? DateTimeCreation { get; set; }
      public String Link { get; set; }
      public String Thumbnail { get; set; }
      public String Image { get; set; }
    }
    

提交回复
热议问题