C# – Pull RSS Feeds From Facebook Page

cfacebookrsssyndicationfeed

I need help to pull RSS feeds from a facebook page I'm using the following code but it keeps giving me an error :

string url = 
    "https://www.facebook.com/feeds/page.php?id=40796308305&format=rss20";

XmlReaderSettings settings = 
    new XmlReaderSettings
                    {
                         XmlResolver = null,
                         DtdProcessing=DtdProcessing.Parse,

                     }; 
XmlReader reader = XmlReader.Create(url,settings);

SyndicationFeed feed = SyndicationFeed.Load(reader);

foreach (var item in feed.Items)
{
    Console.WriteLine(item.Id);
    Console.WriteLine(item.Title.Text);
    Console.WriteLine(item.Summary.Text);

}

if (reader != null) reader.Close();

This code works perfectly with any blog or page rss but with Facebook rss it give an exception with the following message

The element with name 'html' and namespace 'http://www.w3.org/1999/xhtml' is not an allowed feed format.

Thanks

Best Answer

Facebook will return HTML in this instance because it doesn't like the User Agent supplied by XmlReader. Since you can't customize it, you will need a different solution to grab the feed. This should solve your problem:

var req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "GET";
req.UserAgent = "Fiddler";

var rep = req.GetResponse();
var reader = XmlReader.Create(rep.GetResponseStream());

SyndicationFeed feed = SyndicationFeed.Load(reader);

This is strictly a behavior of Facebook, but the proposed change should work equally well for other sites that are okay with your current implementation.

Related Topic