13

我从阅读向非 Facebook 用户显示 Facebook 帖子开始,这有一些用处,但我不敢相信从 Facebook 获得公共提要如此困难。

我想要提要的页面是公开的,您无需登录即可访问。

我是否正确假设我需要一个 access_token 来获取此信息,尝试访问 URL 而不会导致 OAuth 错误。

所以流程应该是这样的(大量,过于复杂):

  1. 使用用户进行身份验证(如果用户不在 Facebook 上怎么办?)
  2. 一些复杂的 OAuth 废话 - 只是为了阅读提要,我什至不想要一个赞按钮或发布到墙上的功能
  3. 使用用户的 access_token 使用 PHP 请求获取到正确 URL 的提要
  4. 渲染提要

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

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

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

对此的任何帮助都会很棒。

谢谢,杰克

编辑

显示这一点的编辑不是完全重复的。

我已经使用了 access_token,但现在它失败了,令牌已过期,我无法再使用它从公共墙获取信息。

我尝试使用其他帖子中提到的方法来延长此令牌的到期日期,但这不起作用,并且到期未延长 - 我们现在在这里,令牌无效,没有进一步的进展。

似乎必须批准 OAuth 请求的手动过程意味着不可能以编程方式获取公共页面的提要。

4

3 回答 3

4

两年后,您可以使用 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;
}
于 2014-10-08T04:27:07.363 回答
0

我在没有令牌等的直接提要中阅读取得了一些成功(使用 magpie、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/

于 2012-07-25T09:07:27.503 回答
0

Facebook自发布其他答案以来,已更改检索公共 Facebook 页面提要的方式。

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

于 2015-10-28T18:07:17.060 回答