Last time I wrote an article about how to get last posts from facebook fan page to your website’s feed. Procedure of connecting website with facebook was little complicated and I tried to find one more way to handle this functionality, and really done this.
I have found new solution to provide this problem. Actually, Facebook shares a RSS feed from all available fanpages. Where did I found it? Of course, not in facebook developers page.
Let’s start in the beggining with the url address which has is https://facebook.com/feeds/page.php?format={format}&id={page_id} . We are able to use few kinds of formats like
- rss20 – RSS 2.0 (rss20)
- atom10 – ATOM 1.0
- json – JSON
I use two of them – atom which I put it into my feedly to catch all activities from most important sites for me, and json which I use like an API for my websites.
So, we have chosen our format and now we should find a facebook page id. It is not obvious where we should looking for. Facebook mostly uses friendly links on page. You can find your fanpage profile id by examine like it button directly on fan page. It should have input field inside with additional parameter called data-profileid where you have the id.
In this point everything is ok, in your browser. You can check: https://facebook.com/feeds/page.php?format=atom10&id=60274674461 . But when we try to download the page from php site in example by get_contents function or by cURL it will receive an error. Why? Because facebook returns data rightly only for selected browsers. We have to add our browser to cURL configuration, I choose Mozilla:
And it works.
Papi.Ostatnio kiedy pisałem na temat pobierania postów z fanpage’a an facebooku do naszej strony internetowej bądź API było to dość skomplikowane. Trzeba było założyć aplikację w facebook developers, łączyć się z nią oraz pilnować czy nasza sesja offline nie wygasła. Dodatkowo w międzyczasie facebook zmienił politykę przechowywania sesji offline i nie jest już ona tak długa.
Zacząłem szukać innego rozwiązania tego problemu i znalazłem. Gdzie? Oczywiście nie na stronie dokumentacji facebooka. Facebook udostępnia news feed w wybranych formatach przez specjalnie do tego przygotowaną stronę: https://facebook.com/feeds/page.php?format={format}&id={page_id} . Możemy wybrać spośród trzech formatów:
- rss20 – RSS 2.0 (rss20)
- atom10 – ATOM 1.0
- json – JSON
Ja skorzystałem z dwóch – atom do połączenia z własnym feedly i pobieraniem postów z najbardziej interesujących mnie stron, ponieważ nie chciałbym, żeby akurat z nich uciekały mi informacje, oraz json do komunikacji jako API.
Skoro już mamy wybrany format to powinniśmy jeszcze pobrać id naszej strony, jednak miejsce gdzie powinniśmy go szukjać nie jest do końca oczywiste. Facebook we wszystkich miejscach skutecznie maskuje id strony, z którą współpracuje. Id możemy znaleźć przez zbadanie np. firebugiem przycisku lubię to znajdującego się bezpośrednio na fanpage’u. W środku powinienn znajdować się input field z dodatkową wartością data-profileid skąd możemy pobrać nasze id.
W tej chwili wklejając adres do przeglądarki powinien działać. Można sprawdzić: https://facebook.com/feeds/page.php?format=atom10&id=60274674461 . Ale podczas proby pobrania strony po stronie PHP zamiast ostatnich postów otrzymujemy komunikat błędu. Co się dzieje? Otóż facebook udostępnia swoje dane jedynie zaufanym przeglądarkom, więc musimy mu dać znać, że taką jesteśmy – ja wybrałem mozillę:
I to działa.
Papi.