{"id":10490,"date":"2015-01-20T15:17:34","date_gmt":"2015-01-20T14:17:34","guid":{"rendered":"http:\/\/flaven.fr\/?p=10490"},"modified":"2015-01-20T15:30:47","modified_gmt":"2015-01-20T14:30:47","slug":"facebook-api-page-parcourir-et-reutiliser-les-donnees-dune-page-facebook","status":"publish","type":"post","link":"https:\/\/flaven.fr\/2015\/01\/facebook-api-page-parcourir-et-reutiliser-les-donnees-dune-page-facebook\/","title":{"rendered":"Facebook, API, Page &#8211; Parcourir et r\u00e9utiliser les donn\u00e9es d&#8217;une page Facebook"},"content":{"rendered":"\n<p>Le paradoxe de Facebook est autant le r\u00e9seau est ouvert \u00e0 tous, libre \u00e0 vous de vous enregistrer, autant l&#8217;API est &#8220;ferm\u00e9&#8221;. Il existe en effet des pans entiers de l&#8217;API qui ne sont utilisables que si selon les mots m\u00eame de Facebook, vous faites partis du &#8220;Public Content Solutions program&#8221;.<\/p>\n<p>A n&#8217;en pas douter cette &#8220;fermeture&#8221; est d\u00e9lib\u00e9r\u00e9e mais on peut se demander l\u00e9gitimement : quel est le but recherch\u00e9 ? Est-ce pour cr\u00e9er un r\u00e9seau d&#8217;entreprises partenaires qui mon\u00e9tisent les usages de Facebook en se chargeant des d\u00e9veloppements autour de l&#8217;API et du m\u00eame coup soulage Facebook du soin de promouvoir l&#8217;usage de son API. Sans doute ! Toutefois, on ne peut que d\u00e9plorer que pour des utilisateurs\/d\u00e9veloppeurs, toutes les fonctionnalit\u00e9s comme celles du &#8220;Hashtag Counter&#8221;, &#8220;Keyword Insights&#8221; ou enfin des &#8220;Trends&#8221; soient \u00e0 ce point verrouill\u00e9es. A l&#8217;inverse, Twitter offre une API beaucoup plus accessible et mall\u00e9able. Conclusion, si vous \u00eates amen\u00e9(e)s \u00e0 travailler avec l&#8217;API de Facebook, vous vous heurterez rapidement \u00e0 cette fin de non-recevoir :  &#8220;This API is restricted to partners in the Public Content Solutions program.&#8221; donc prudence.<\/p>\n<p>Car, c&#8217;est bien \u00e0 cette limite \u00e0 laquelle vous pourrez heurter pour un projet dont le besoin semblait simple sur le papier tout au moins. En l&#8217;esp\u00e8ce, rapatrier tout le contenu, poss\u00e9dant un hashtag Facebook sp\u00e9cifique, publi\u00e9 par des contributeurs &#8220;whitelist\u00e9s&#8221;.<\/p>\n<p><b>Pour l&#8217;ensemble de nos exemples de requ\u00eates, on s&#8217;est permis d&#8217;utiliser l&#8217;access_token de la page Smashing Magazine, le c\u00e9l\u00e9brissime site &#8220;For Professional Web Designers and Developers&#8221; <a href=\"http:\/\/www.smashingmagazine.com\" target=\"_blank\">www.smashingmagazine.com<\/a><\/b><\/p>\n<h4>V1 vs V2<\/h4>\n<p>Il y a eu un gros changement de la version 1 \u00e0 la version de l&#8217;API Facebook. Il est certain que les requ\u00eates de recherche sur des hashtags un peu &#8220;\u00e0 la TW&#8221; semble d\u00e9pr\u00e9ci\u00e9. Pour info, %23 signifie #. Ce genre de requ\u00eate est sujet d\u00e9sormais sujet \u00e0 condition : &#8220;If you app was active before 4\/30\/2014 you can use API v1.0 until 4\/30\/2015. Otherwise you have to use API v2.0 which don&#8217;t have post search&#8221;<\/p>\n<p> <b>Sur une version diff\u00e9rente de la V2<\/b><br \/>\nIl est toujours possible ce type de requ\u00eate mais pour combien de temps. <code>https:\/\/graph.facebook.com\/search?q=%23tech&access_token=553435274702353|OaJc7d2WCoDv83AaR4JchNA_Jgw<\/code><\/p>\n<p><b>Sur la V2<\/b><br \/>\nSur ce type de requ\u00eate, vous allez obtenir comme r\u00e9sultat un message d&#8217;erreur &#8220;Post search has been deprecated&#8221;.<br \/>\n<code>https:\/\/graph.facebook.com\/v2.2\/search?q=%23tech&access_token=553435274702353|OaJc7d2WCoDv83AaR4JchNA_Jgw<\/code><\/p>\n<h4>Les fonctionnalit\u00e9s inaccessibles<\/h4>\n<p>Les modules <code>hashtag_counter<\/code>, <code>Keyword Insights<\/code> ou la <code>Trends API<\/code> ne sont pas accessibles au commun des mortels. C&#8217;est bien dommage car ces fonctions pourraient offrir un bon potentiel pour travailler avec l&#8217;API Facebook. <\/p>\n<ul>\n<li><a href=\"https:\/\/developers.facebook.com\/docs\/hashtag_counter\/v2.2\" target=\"_blank\">https:\/\/developers.facebook.com\/docs\/hashtag_counter\/v2.2<\/a><\/li>\n<li><a href=\"https:\/\/developers.facebook.com\/docs\/trends\/v2.0\" target=\"_blank\">https:\/\/developers.facebook.com\/docs\/trends\/v2.0<\/a><\/li>\n<li><a href=\"https:\/\/developers.facebook.com\/docs\/hashtag_counter\/\" target=\"_blank\">https:\/\/developers.facebook.com\/docs\/hashtag_counter\/<\/a><\/li>\n<\/ul>\n<h4>Une \u00e9tude de cas \u00e0 l&#8217;aide la page de la page de smashingmagazine<\/h4>\n<p>Etant donn\u00e9 que l&#8217;access_token de smashingmagazine est disponible, nous sommes permis de faire quelques essais de requ\u00eates sur l&#8217;API Facebook.<\/p>\n<p><b>Une requ\u00eate sur les messages uniquement<\/b><br \/>\n<a href=\"https:\/\/graph.facebook.com\/v2.2\/smashmag\/posts?fields=message&#038;access_token=553435274702353|OaJc7d2WCoDv83AaR4JchNA_Jgw\" target=\"_blank\">https:\/\/graph.facebook.com\/v2.2\/smashmag\/posts?fields=message&#038;access_token=553435274702353|OaJc7d2WCoDv83AaR4JchNA_Jgw<\/a><\/p>\n<p><b>Une requ\u00eate sur les messages avec seulement le <code>status_type=wall_post<\/code><\/b><br \/>\n<a href=\"https:\/\/graph.facebook.com\/v2.2\/smashmag\/posts?fields=message&#038;status_type=wall_post&#038;access_token=553435274702353|OaJc7d2WCoDv83AaR4JchNA_Jgw\" target=\"_blank\">https:\/\/graph.facebook.com\/v2.2\/smashmag\/posts?fields=message&#038;status_type=wall_post&#038;access_token=553435274702353|OaJc7d2WCoDv83AaR4JchNA_Jgw<\/a><\/p>\n<p><b>Une requ\u00eate un peu plus compl\u00e8te incluant <code>message,story,shares,likes,comments<\/code><\/b><br \/>\n<a href=\"https:\/\/graph.facebook.com\/v2.2\/smashmag\/posts?fields=message,story,shares,likes,comments&#038;access_token=553435274702353|OaJc7d2WCoDv83AaR4JchNA_Jgw\" target=\"_blank\">https:\/\/graph.facebook.com\/v2.2\/smashmag\/posts?fields=message,story,shares,likes,comments&#038;access_token=553435274702353|OaJc7d2WCoDv83AaR4JchNA_Jgw<\/a><\/p>\n<p><b>Une requ\u00eate compl\u00e8te qui rapatrie tout<\/b><br \/>\n<a href=\"https:\/\/graph.facebook.com\/v2.2\/smashmag\/posts?&#038;access_token=553435274702353|OaJc7d2WCoDv83AaR4JchNA_Jgw\" target=\"_blank\">https:\/\/graph.facebook.com\/v2.2\/smashmag\/posts?&#038;access_token=553435274702353|OaJc7d2WCoDv83AaR4JchNA_Jgw<\/a><\/p>\n<p>Une fois votre requ\u00eate choisi, vous r\u00e9cup\u00e9rez un flux JSON qui vous permettra ensuite de manipuler les donn\u00e9es, ce qui \u00e9minemment commode pour placer ensuite ce contenu dans un site ou une application, attention tout de m\u00eame au temps de r\u00e9ponse de l&#8217;API Facebook, cela peut vous jouer des tours en terme d&#8217;affichage du contenu.<\/p>\n<pre lang=\"php\" escaped=\"true\">\r\n\t\r\n\t&lt;?php\r\n\t\r\n\t\r\n\t\t\/* VALUES *\/\r\n\t\t\/*\r\n\t\tExample made for the smashng magazine on facebook\r\n\t\tSee https:\/\/www.facebook.com\/smashmag\r\n\t\t*\/\r\n\t\r\n\t\r\n\t\t\/* Begin graph url for FB *\/\r\n\t\tdefine ('_GRAPH_FB_', 'https:\/\/graph.facebook.com\/');\r\n\t\r\n\t\t\/* Page ID or username *\/\r\n\t\tdefine ('_PAGE_ID_', 'smashmag');\r\n\t\r\n\t\t\/* Page Access Token *\/\r\n\t\tdefine ('_PAGE_ACCESS_TOKEN_', '553435274702353|OaJc7d2WCoDv83AaR4JchNA_Jgw');\r\n\t\r\n\r\n\r\n\t$page_posts = file_get_contents(''._GRAPH_FB_.''._PAGE_ID_.'\/posts?fields=message&amp;access_token='._PAGE_ACCESS_TOKEN_.''); \r\n\r\n\t\t\t\t\t$pageposts = json_decode($page_posts); \r\n\t\t\t\t\r\n\t\t\t\t\t\/* For debug purpose *\/\r\n\t\t\t\t\t\/\/ var_dump ($pageposts);\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\t\t\/*\r\n\t\t\t\tprint ('&lt;ol&gt;');\r\n\t\t\t\t\tforeach ($pageposts-&gt;data as $fppost) {\r\n\t\t\t\t\t\tif (property_exists($fppost, 'message')) { \r\n\t\t\t\t\t\t\tprint ('&lt;li&gt;');\r\n\t                 print $fppost-&gt;message.'&lt;\/br&gt;';\r\n\t\t\t\t\t print ('&lt;\/li&gt;');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t }\r\n\t\t\t\tprint ('&lt;\/ol&gt;');\r\n\t\t\t\t*\/\r\n\t\t\t\t\r\n\t\t\t\t\tprint ('&lt;ol&gt;');\r\n\t\t\t\t\tforeach ($pageposts-&gt;data as $fppost) {\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\/\/ var_dump ($fppost);\r\n\t\t\t\t\t\t\r\n\t\t\t\t\tprint ('&lt;li&gt;');\r\n                 \r\n\t\t\t\t\tprint ('id -&gt; '.$fppost-&gt;id.'');\r\n\t\t\t\t\tprint('&lt;\/br&gt;');\r\n                 \r\n\t\t\t\t\tprint ('message -&gt; '.$fppost-&gt;message.'');\r\n\t\t\t\t\tprint('&lt;\/br&gt;');\r\n\r\n\t\t\t\t\tprint ('picture -&gt; '.$fppost-&gt;picture.'');\r\n\t\t\t\t\tprint('&lt;\/br&gt;');\r\n\r\n\t\t\t\t\tprint ('category -&gt; '.$fppost-&gt;from-&gt;category.'');\r\n\t\t\t\t\tprint('&lt;\/br&gt;');\r\n\t\t\t\t \r\n\t\t\t\t\tprint ('name -&gt; '.$fppost-&gt;from-&gt;name.'');\r\n\t\t\t\t\tprint('&lt;\/br&gt;');\r\n\t\t\t\t \r\n\t\t\t\t\tprint ('link -&gt; '.$fppost-&gt;link.'');\r\n\t\t\t\t\tprint('&lt;\/br&gt;');\r\n\r\n\t\t\t\t\tprint ('status_type -&gt; '.$fppost-&gt;status_type.'');\r\n\t\t\t\t\tprint('&lt;\/br&gt;');\r\n\t\t\t\t \r\n\t\t\t\t\tprint ('&lt;\/li&gt;');\r\n\t\t\t\t\tprint('&lt;br&gt;&lt;br&gt;');\r\n\r\n\t\t\t\t }\/\/EOL\r\n\t\t\t\tprint ('&lt;\/ol&gt;');\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t \r\n        \r\n\t?&gt;\r\n<\/pre>\n<h2>En savoir plus<\/h2>\n<ul>\n<li>Smashing Magazine, For Professional Web Designers and Developers<br \/><a href=\"http:\/\/www.smashingmagazine.com\" target=\"_blank\">http:\/\/www.smashingmagazine.com<\/a><\/li>\n<li>2 Cool Things You Can Do with the Facebook Graph API<br \/><a href=\"http:\/\/www.sitepoint.com\/2-cool-things-can-facebook-graph-api\/\" target=\"_blank\">http:\/\/www.sitepoint.com\/2-cool-things-can-facebook-graph-api\/<\/a><\/li>\n<li>La documentation officielle de Facebook sur &#8220;The Graph API&#8221;<br \/><a href=\"https:\/\/developers.facebook.com\/docs\/graph-api?locale=fr_FR\" target=\"_blank\">https:\/\/developers.facebook.com\/docs\/graph-api?locale=fr_FR<\/a><\/li>\n<li>La documentation officielle de Facebook sur &#8220;Friend List&#8221;<br \/><a href=\"https:\/\/developers.facebook.com\/docs\/graph-api\/reference\/v2.2\/friendlist\" target=\"_blank\">https:\/\/developers.facebook.com\/docs\/graph-api\/reference\/v2.2\/friendlist<\/a><\/li>\n<li>Un pan de l&#8217;API malheureusement r\u00e9serv\u00e9 aux partenaires sur le &#8220;Hashtag Counter API&#8221;<br \/><a href=\"https:\/\/developers.facebook.com\/docs\/hashtag_counter\/v2.2\" target=\"_blank\">https:\/\/developers.facebook.com\/docs\/hashtag_counter\/v2.2<\/a><\/li>\n<li>Un pan de l&#8217;API malheureusement r\u00e9serv\u00e9 aux partenaires sur le &#8220;Trends API&#8221;<br \/><a href=\"https:\/\/developers.facebook.com\/docs\/trends\/v2.0\" target=\"_blank\">https:\/\/developers.facebook.com\/docs\/trends\/v2.0<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Le paradoxe de Facebook est autant le r\u00e9seau est ouvert \u00e0 tous, libre \u00e0 vous de vous enregistrer, autant l&#8217;API est &#8220;ferm\u00e9&#8221;. Il existe en&hellip; <\/p>\n<p class=\"text-center\"><a href=\"https:\/\/flaven.fr\/2015\/01\/facebook-api-page-parcourir-et-reutiliser-les-donnees-dune-page-facebook\/\" class=\"more-link\">Continue reading &rarr; <span class=\"screen-reader-text\">Facebook, API, Page &#8211; Parcourir et r\u00e9utiliser les donn\u00e9es d&#8217;une page Facebook<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":10492,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"bf_ai_meta_description":"Parcourez et r\u00e9utilisez les donn\u00e9es d'une page Facebook via l'API. Analysez les outils et les r\u00e9sultats possibles malgr\u00e9 les restrictions.","bf_ai_og_title":"Facebook API: Parcourir les donn\u00e9es","footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[3439,3444,3448,3449],"tags":[2183,53,2141,1160,2142,2140],"class_list":["post-10490","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-apis-integration","category-programming-databases","category-tools-productivity","category-tutorials-how-to","tag-api","tag-facebook","tag-hashtag-counter","tag-page","tag-smashingmagazine","tag-token"],"jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p3Vuhl-2Jc","jetpack_featured_media_url":"https:\/\/flaven.fr\/wp-content\/uploads\/2015\/01\/facebook_post_wall_b.jpg","_links":{"self":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts\/10490","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/comments?post=10490"}],"version-history":[{"count":1,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts\/10490\/revisions"}],"predecessor-version":[{"id":10491,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts\/10490\/revisions\/10491"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/media\/10492"}],"wp:attachment":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/media?parent=10490"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/categories?post=10490"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/tags?post=10490"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}