在网站上显示Facebook新闻动态/时间线

24

我有一个客户希望在他们的网站上显示公司的Facebook新闻动态/时间线。这不是个人的时间线/新闻动态,而是一个组织的。

我阅读的所有内容都好几年前的,但要点似乎是:Facebook想将其所有数据保留在自己的服务器上--他们不希望人们导出数据,并且已经尝试过的人已被禁止。(就像我说的,这些信息是几年前的。)

我找到的最接近的东西是活动 Feed 插件,但它只能记录其他用户与站点或FB应用程序的互动。

是否有人成功地将其公共更新导出到外部网站,或者我必须告诉我的客户它无法完成?

感谢任何帮助!


如果你们想要展示Facebook页面的时间线动态,我找到了一篇教程,详细解释了如何一步一步实现 https://www.codeofaninja.com/2014/10/display-facebook-page-feed-on-wordpress-or-website.html - Emkey
6个回答

31
据我所知,这是可能的,但有一种最简单但不适合您情况的解决方案是使用Like Box插件
“Like Box”使用户能够:
- 查看已经喜欢该页面的用户数量以及哪些朋友也喜欢它 - 从页面中阅读最新帖子 - 点击一个按钮就可以喜欢该页面,而无需访问该页面
更好的解决方案是使用他们的Graph API,然而你只能读取数据(作为JSON),并不能在客户端网站上完全复制流,不要指望能够应用Facebook使用的样式(即你将无法爬取它),你必须要么复制它,要么创建自己的样式。
现在,如果页面是公开的且所有人都可以阅读,例如没有隐私规则,则您可以使用任何有效的访问令牌(也可以是应用程序访问令牌)调用该URL:
https://graph.facebook.com/<clientpagename_OR_id>/feed
或者
https://graph.facebook.com/<clientpagename_OR_id>/posts

根据您的需求,尝试使用Graph API Explorer来检查数据(并查看返回的数据类型)。当有许多帖子时,会有分页URL,您也可以在Explorer中注意到它们。

如果页面不是公开的,则需要具有read_stream权限的access_token,因此您需要创建一个Web站点类型的Facebook应用程序。然后请获取客户页面的管理员授权该应用程序,并获得 read_stream 权限。之后,您可以使用身份验证后收到的access_token调用URL,并继续阅读内容流。

https://graph.facebook.com/<clientpagename_OR_id>/posts?access_token=thetoken
在这种情况下,请使用PHP SDK简化认证并调用图形API。 重要链接:身份验证指南实时更新。 祝好运。 编辑:您需要访问令牌才能访问反馈或帖子连接,但您不一定需要访问令牌才能读取页面对象本身,如此文档中所述。
来自文档的说明:

实时更新目前还没有用处,因为它还没有与帖子的连接,但是我已经给了你未来参考的链接。 - bool.dev
我四处搜索,但找不到一个不需要访问令牌的“公共”页面。我猜无论如何你都需要一个访问令牌。 - Chuck Le Butt
我知道有一个页面,最近在这里的一个问题中提到过。请在Graph Explorer中尝试此URL:https://graph.facebook.com/dominos/posts或者直接在浏览器地址栏中输入。另外,如果您想授予我赏金,那么您必须手动进行操作,以防24小时时间已过。 - bool.dev
我必须等几个小时才能让它允许我。 - Chuck Le Butt
让我们在聊天中继续这个讨论。点击此处进入聊天室 - bool.dev
显示剩余2条评论

7
你可以使用Facebook的Graph API来检索组织的新闻源。时间线不能通过公共API检索。
没有插件可以做到这一点。你需要调用
https://graph.facebook.com/USER_ID/home

这将为您提供一个JSON响应。

然后,您需要将JSON解析为组织网页上的新布局。

令人困惑的是,调用

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

它不检索新闻提要,而是用户的墙贴(可能是您想要的,也可能不是您想要的)。

这里是一个教程,介绍了如何使用php在网站上设置新闻提要的基础知识。


4
最简单的方法是阅读 Facebook 时间线 RSS:
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;
}

1
这份文档详细介绍了获取Facebook访问令牌以及使用令牌获取FB动态的步骤。 示例: 可以在此处查看一个实时示例。

https://newtonjoshua.com

Graph API简介: Graph API是获取Facebook平台数据的主要方式。这是一个基于低级别HTTP的API,您可以使用它来查询数据、发布新闻、管理广告、上传照片以及其他应用程序可能需要完成的各种任务。

Facebook应用程序:

https://developers.facebook.com

创建一个Facebook应用程序。您将获得一个App_IdApp_SecretGraph API Explorer:

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

你将获得一个短暂的access_token。因此,这将是我们的short_lived_access_token
注意:在创建访问令牌时,请选择您需要的所有fb字段。这将授予访问令牌获取这些字段的权限。 访问令牌扩展:

https://graph.facebook.com/oauth/access_token?grant_type=fb_exchange_token&client_id={{App_Id}}&client_secret={{App_Secret}}&fb_exchange_token={{short-lived-access_token}}

你将获得一个有效期为2个月的access_token访问令牌调试器:

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

你可以查看access_token的详细信息。 JavaScript的Facebook SDK: 在你的HTML中包含以下JavaScript代码,异步加载SDK到你的页面中。
        (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: 让我们调用 API 来获取我们的 Facebook ID、个人资料图片、封面图片和动态。

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
            }

        }
    );
};

使用Graph API Explorer设计查询,应在“fields”中输入(例如:“id,picture {url},cover,feed”)
现在,您可以使用访问令牌从Facebook Graph API获取您的Facebook数据。
请参考https://developers.facebook.com/docs/graph-api/overview/ 注意:您的access_token将在2个月后过期。之后,请创建新的access_token。

1

可以做到。首先在Facebook的开发者页面上注册网站。然后,您可以使用任何适合与FB交互的API。以前我使用过SpringSocial(因为我与Spring紧密合作)... 您可以使用FB自己的API,这也非常有用,您可以阅读教程此处


我已经查看了API文档,但是没有找到任何可以满足我的需求的内容 :( - Chuck Le Butt
有一些 WordPress 插件可以让你添加访问令牌后直接显示你的 Facebook 页面。我参与开发了其中一个插件:http://www.slickremix.com/downloads/feed-them-social-premium-extension/。 - SlickRemix

1
可以做到。您只需要通过Facebook获取访问令牌,然后就可以通过Facebook API访问帖子的JSON源。您需要转到Facebook开发者网站并单击顶部的“应用程序”。按照步骤获取应用程序密钥和客户端ID。然后将它们放入以下URL中,它将返回您的访问令牌:

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

以下是逐步说明:http://smashballoon.com/custom-facebook-feed/access-token/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接