web-dev-qa-db-fra.com

Affichage d'un fil d'actualité / d'une chronologie Facebook sur un site Web

J'ai un client qui souhaite que le fil d'actualités Facebook de son entreprise soit affiché sur son site Web. Ce n'est pas une chronologie personnelle/un fil d'actualité, mais une organisation.

Tout ce que j'ai lu semble vieux de quelques années, mais le résultat semble être: Facebook veut conserver toutes ses données sur ses propres serveurs - ils ne veulent pas que les gens l'exportent et les gens ont été interdits d'essayer. (Comme je l'ai dit, ces informations datent de plusieurs années.)

La chose actuelle la plus proche que j'ai trouvée est le Activity Feed Plugin , mais qui enregistre uniquement les interactions des autres utilisateurs avec le site ou une application FB.

Quelqu'un a-t-il réussi à exporter ses mises à jour publiques vers un site Web externe, ou dois-je dire à mon client que cela ne peut pas être fait?

Merci pour toute aide!

24
Chuck Le Butt

AFAIK, c'est possible, en quelque sorte. La solution la plus simple, mais pas la mieux adaptée à votre situation pourrait être le plugin Like Box :

La Like Box permet aux utilisateurs de:

Voir combien d'utilisateurs aiment déjà cette page, et lesquels de leurs amis l'aiment aussi
Lire les messages récents de la page
Comme la page en un seul clic, sans avoir besoin de visiter la page

Meilleure solution: utilisez leur Graph API , mais vous ne pouvez lire que les données (en JSON), ne pas avoir le flux exactement répliqué sur le site Web de votre client, ne vous attendez pas à pouvoir appliquer les styles qui Facebook utilise (c'est-à-dire que vous ne pourrez pas le gratter), vous devrez soit le reproduire, soit créer vos propres styles.

Maintenant, si la page est publique et peut être lue par tous, car il n'y a pas de règles de confidentialité, vous pouvez simplement appeler l'url avec n'importe quel access_token valide (peut également être l'application access_token):

https://graph.facebook.com/<clientpagename_OR_id>/feed

ou

https://graph.facebook.com/<clientpagename_OR_id>/posts

en fonction de ce dont vous avez besoin, essayez graph api Explorer pour vérifier cela (et voir également le type de données renvoyées). Lorsqu'il y a beaucoup de messages, il y aura des URL de pagination, que vous pourrez également remarquer dans l'Explorateur.

Dans le cas où la page n'est pas publique, vous aurez besoin d'un access_token avec la permission read_stream, donc vous devrez créer un application Facebook , de type site Web. Ensuite, demandez à l'administrateur de la page de votre client d'autoriser l'application, avec read_streamautorisation . Après cela, vous pouvez appeler les URL avec le access_token que vous recevez après l'authentification et pouvez continuer à lire le flux.

https://graph.facebook.com/<clientpagename_OR_id>/posts?access_token=thetoken

Dans ce cas, utilisez le PHP SDK , pour simplifier l'authentification et appeler l'api du graphique.

Liens importants: Guide d'authentification , Mises à jour en temps réel .

Bonne chance.

Modifier: vous avez besoin d'un jeton d'accès pour accéder au flux ou aux publications connexions , mais vous n'avez pas nécessairement besoin d'un jeton d'accès pour lire l'objet de page lui-même, comme donné dans cette documentation .
Note du doc:

Pour les connexions qui nécessitent un jeton d'accès, vous pouvez utiliser n'importe quel jeton d'accès valide si la page est publique et non restreinte. Les connexions sur des pages restreintes nécessitent un jeton d'accès utilisateur et ne sont visibles que pour les utilisateurs qui répondent aux critères de restriction (par exemple, l'âge) définis sur la page.

31
bool.dev

Vous pouvez récupérer le fil d'actualité de l'organisation à l'aide de l'API Graph de Facebook. La chronologie ne peut pas être récupérée via l'API publique.

Il n'y a pas de plugin pour le faire. Vous auriez besoin d'appeler

https://graph.facebook.com/USER_ID/home

ce qui vous donne une réponse JSON.

Vous devez ensuite analyser le JSON dans une nouvelle mise en page sur la page Web de l'organisation.

Confusément, appelant

https://graph.facebook.com/USER_ID/feed

ne récupère pas le fil d'actualité, mais les publications du mur d'un utilisateur, qui peuvent ou non être ce que vous voulez.

Ici est un tutoriel qui passe par les bases de la configuration d'un fil d'actualité sur un site Web avec php.

7
Gunnar Karlsson

La façon la plus simple de le faire est de lire le flux RSS de la chronologie Facebook:

function FacebookFeed($pagename, $count, $postlength) {
$pageID = file_get_contents('https://graph.facebook.com/?ids='.$pagename.'&fields=id');
$pageID = json_decode($pageID,true);
$pageID = $pageID[$pagename]['id'];

ini_set('user_agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9');
$rssUrl = 'http://www.facebook.com/feeds/page.php?format=rss20&id='.$pageID;
$xml = simplexml_load_file($rssUrl);
$entry = $xml->channel->item;

for ($i = 0; $i < $count; $i++) {
$description_original = $entry[$i]->description;
$description_striphtml = strip_tags($description_original);
$description = substr($description_striphtml, 0, $postlength);

$link = $entry[$i]->link;

$date_original = $entry[$i]->pubDate;
$date = date('d-m-Y, H:i', strtotime($date_original));

$FB_feed .= $description."&hellip;<br>";
$FB_feed .= "<small><a href='".$link."'>".$date."</a></small><br><br>";
}

return $FB_feed;
}
4
Jan-Paul Kleemans

Cela peut certainement être fait. Vous avez juste besoin d'obtenir un jeton d'accès via Facebook, puis vous pouvez accéder à un flux JSON de messages via l'API Facebook.

Vous devez aller sur le site des développeurs Facebook et cliquer sur Applications en haut. Suivez les étapes pour obtenir un secret d'application et un ID client. Ensuite, mettez-les simplement dans l'URL suivante et il renverra votre jeton d'accès:

https://graph.facebook.com/oauth/access_token?grant_type=client_credentials&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET

Instructions étape par étape ici: http://smashballoon.com/custom-facebook-feed/access-token/

1
John Brackett

Oui, ça peut se faire. Enregistrez d'abord le site Web sur la page développeur de Facebook. Vous pouvez alors utiliser n'importe quelle API appropriée pour interagir avec FB. Il y a quelque temps, j'utilisais SpringSocial (puisque je travaillais étroitement avec Spring) ... Vous pouvez utiliser l'api de FB qui est également très utile, vous pouvez lire le tutoriel ici

1
Amit

Ce document détaille les étapes pour obtenir les jetons d'accès Facebook et l'utilisation des jetons pour récupérer les flux FB.

Exemple: Un exemple en direct est disponible dans

https://newtonjoshua.com

Introduction à l'API Graph: L'API Graph est le principal moyen pour entrer et sortir des données de la plateforme de Facebook. Il s'agit d'une API bas niveau HTTP que vous pouvez utiliser pour interroger des données, publier de nouvelles histoires, gérer des annonces, télécharger des photos et diverses autres tâches qu'une application pourrait avoir à effectuer.

Applications FaceBook:

https://developers.facebook.com

Créez une application Facebook. Vous obtiendrez un App_Id et App_Secret

Explorateur d'API graphique:

https://developers.facebook.com/tools/Explorer/{{App_Id}} /? method = GET & path = me% 2Ffeed & version = v2.8

Vous obtiendrez un access_token qui est de courte durée. Ce sera donc notre short_lived_access_token.

remarque: lors de la création du jeton d'accès, sélectionnez tous les champs fb dont vous avez besoin, ce qui permettra au jeton d'accès de récupérer ces champs.

Extension de jeton d'accès:

https://graph.facebook.com/oauth/access_token?grant_type=fb_exchange_token&client_id= {{App_Id}} & client_secret = {{App_Secret}} & fb_exchange_token = {{éphémère-access_token}}

Vous obtiendrez un access_token d'une validité de 2 mois.

Débogueur de jeton d'accès:

https://developers.facebook.com/tools/debug/accesstoken?q= {{access_token}} & version = v2.8

vous pouvez vérifier vérifier les détails de la access_token.

SDK Facebook pour JavaScript: Incluez le code JavaScript ci-dessous dans votre code HTML pour charger de manière asynchrone le SDK dans votre page

        (function (d, s, id) {
            var js, fjs = d.getElementsByTagName(s)[0];
            if (d.getElementById(id)) {
                return;
            }
            js = d.createElement(s);
            js.id = id;
            js.src = "//connect.facebook.net/en_US/sdk.js";
            fjs.parentNode.insertBefore(js, fjs);
        }(document, 'script', 'facebook-jssdk'));

API graphique: Appelons l'API pour obtenir notre identifiant FB, notre image de profil, notre image de couverture et nos flux.

window.fbAsyncInit = function () {
    FB.init({
        appId: '{{App_Id }}',
        xfbml: true,
        version: 'v2.7'
    });
    FB.api(
        '/me',
        'GET', {
            fields: 'id,picture{url},cover,feed',
            access_token: {{access_token}}
        },
        function (response) {
        if (response.error) {
                console.error(response.error.message);
            }
            if (response.picture.data.url) {
                profilePic = response.picture.data.url;
            }
            if (response.cover.source) {
                coverPic = response.cover.source;
            }
            if (response.feed.data) {
        feeds = response.feed.data;
                feeds.forEach(function (feed) {
            // view each feed content
                });
            }
            if (response.feed.paging.next) {
                nextFeedPage = response.feed.paging.next;
        // a request to nextFeedPage will give the next set of feeds
            }

        }
    );
};

Utilisez l'explorateur d'API Graph pour concevoir votre requête qui doit être entrée dans les "champs" (par exemple: "id, image {url}, couverture, flux")

Vous pouvez désormais récupérer vos données Facebook à partir de l'API Facebook Graph à l'aide de votre access_token.

Reportez-vous à https://developers.facebook.com/docs/graph-api/overview/

Remarque: votre access_token expirera dans 2 mois. Créez un nouveau access_token après cela.

1
Newton Joshua