24

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

我读过的所有内容似乎都是几年前的事情,但结果似乎是:Facebook 希望将其所有数据保存在自己的服务器上——他们不希望人们将其导出,而且人们因尝试而被禁止。(正如我所说,这些信息已有好几年的历史了。)

我发现的最接近的当前事物是Activity Feed Plugin,但它只注册其他用户与站点或 FB 应用程序的交互。

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

谢谢你的帮助!

4

6 回答 6

31

AFAIK,在某种程度上是可能的。最简单但不是最适合您的情况的解决方案可能是Like Box 插件

Like Box 使用户能够:

查看有多少用户已经喜欢这个页面,以及他们的哪些朋友也喜欢它
阅读来自页面 的最新帖子
一键点赞页面,无需访问页面

更好的解决方案:使用他们的Graph API,但是您只能读取数据(作为 JSON),不能在您的客户网站上完全复制流,不要期望能够应用 facebook 使用的样式(即您不会的)无法刮掉它),您必须复制它,或者创建自己的样式。

现在,如果页面是公开的并且可以被所有人阅读,因为没有隐私规则,那么您可以简单地使用任何有效的 access_token 调用 url(也可以是 app access_token):

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

或者

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

根据您的具体需要,尝试使用图形 API 资源管理器进行检查(并查看返回的数据类型)。当有很多帖子时,会有分页网址,您也可以在资源管理器中注意到。

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

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

在这种情况下,使用PHP SDK来简化身份验证和调用图形 api。

重要链接:认证指南实时更新

祝你好运。

编辑:您确实需要访问令牌来访问提要或发布连接,但您不一定需要访问令牌来读取页面对象本身,如本文档中所述。
来自文档的注释:

对于需要访问令牌的连接,如果页面是公开的且不受限制,您可以使用任何有效的访问令牌。受限页面上的连接需要用户访问令牌,并且仅对满足页面上设置的限制条件(例如年龄)的用户可见。

于 2012-04-23T23:01:36.717 回答
7

您可以使用 Facebook 的 Graph API 检索组织的新闻源。无法通过公共 API 检索时间线。

没有插件可以做到这一点。你需要打电话

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

这会给你一个 JSON 响应。

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

迷惑地打电话

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

不检索新闻源,而是检索用户的墙帖,这可能是也可能不是您想要的。

是一个教程,介绍了使用 php 在网站上设置新闻源的基础知识。

于 2012-04-23T23:25:59.450 回答
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;
}
于 2013-07-11T12:41:56.033 回答
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/

于 2013-06-06T14:44:43.737 回答
1

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

于 2012-04-18T11:57:34.083 回答
1

本文档详细介绍了获取 facebook 访问令牌以及使用令牌获取 FB 提要的步骤。

例子: 一个活生生的例子可在

https://newtonjoshua.com

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

脸书应用程序:

https://developers.facebook.com

创建一个 Facebook 应用程序。你会得到一个App_IdApp_Secret

图形 API 资源管理器:

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}}

您将获得access_token有效期为 2 个月的证书。

访问令牌调试器:

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

您可以检查检查的详细信息access_token

Facebook SDK for JavaScript: 在您的 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'));

Graph API: 让我们调用 API 来获取我们的 FB 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 设计应在“字段”中输入的查询(例如:“id,picture{url},cover,feed”)

现在您可以使用您的 access_token 从 Facebook Graph API 获取您的 Facebook 数据。

参考https://developers.facebook.com/docs/graph-api/overview/

注意:您access_token将在 2 个月后到期。之后创建一个新的 access_token。

于 2016-10-24T15:43:50.933 回答