使用Graph API从公共Facebook页面获取墙提要-它真的如此复杂吗



我首先阅读了向非Facebook用户显示Facebook帖子,这很有用,但我不敢相信从Facebook获得公共订阅源会如此困难。

我想要一个提要的页面是公共的,你不需要登录就可以访问它。

我假设我需要一个access_token来获取这些信息,尝试访问URL而不会导致OAuth错误,这是对的吗。

因此流程应该是这样的(非常复杂):

  1. 使用用户进行身份验证(如果用户不在Facebook上怎么办?)
  2. 一些复杂的OAuth废话——只是为了阅读提要,我甚至不想要类似按钮或贴墙功能
  3. 使用用户的access_token,通过PHP请求获得正确的URL
  4. 渲染提要

假设用户不在Facebook上,你会怎么做,使用通用应用程序来获取订阅源?

  1. 使用我的通用应用程序的ID和机密硬编码到Facebook的身份验证请求
  2. 一些复杂的OAuth废话
  3. 通过应用程序的access_token,使用PHP请求获得正确URL的提要
  4. 渲染提要
  5. 哦,不,身份验证已经过期,请重新身份验证并捕获这个新的access_token,以便在将来的请求中使用

这似乎真的很复杂,除了Facebook想知道正在发生的一切之外,使用XPath创建cURL并从公共URL中抓取内容会更容易。

这方面的任何帮助都将是伟大的。

谢谢,Jake

编辑

显示这一点的编辑并非完全重复

我在使用access_token的情况下进行了此操作,但现在它失败了,令牌已经过期,我无法再使用它从公共墙获取信息。

我试图使用其他帖子中提到的方法来延长这个令牌的到期日,但这没有奏效,到期时间也没有延长——我们现在看到的是一个无效的令牌,没有进一步的进展。

似乎必须批准OAuth请求的手动过程意味着不可能通过程序获得公共页面的提要。

两年后,您可以使用Facebook应用程序(使用PHP和Slim的示例)以编程方式完成此操作:https://developers.facebook.com/apps/

$base_api="https://graph.facebook.com/";
$client_id="XXXXXX";
$app_secret="XXXXXX";
//get a profile feed (can be from a page, user, event, group)
$app->get('/feed/:profileid/since/:start_date', function ($profile_id,$start_date) {
    $start_time=date('m/d/Y h:i:s',$start_date);
    $request = new FacebookRequest(
      getSession(),
      'GET',
      '/'.$profile_id.'/feed?since='.$start_time
    );
    $response = $request->execute();
    $graphObject = $response->getGraphObject();
    //do something with $graphObject
});

function getSession(){
    $session = new FacebookSession(getAccessToken());
    return $session;
}

function getAccessToken(){
    global $base_api, $client_id, $app_secret;
    $url=$base_api."oauth/access_token?client_id=".$client_id."&client_secret=".$app_secret."&grant_type=client_credentials";
    $str = file_get_contents($url);
    $token = str_replace ( "access_token=" , "" , $str );
    return $token;
}

我在不使用令牌等的情况下成功地读取了直接提要。(使用喜鹊、simplepie或querypath或类似方法)。

http://www.facebook.com/feeds/page.php?format=rss20&id=。。。。。。。。http://www.facebook.com/feeds/page.php?format=atom10&id=。。。。。。。。

在上找到:http://ahrengot.com/tutorials/facebook-rss-feed/

Facebook在发布其他答案后更改了检索公共Facebook页面提要的方式。

看看我的答案/问题。它不是PHP,但它提供了您需要的URLs和过程。

最新更新