首页 文章

使用Graph API从公共Facebook页面获取墙上馈送 - 这真的很复杂吗?

提问于
浏览
13

我已经开始阅读Displaying Facebook posts to non-Facebook users,这有一些用处,但我不敢相信从Facebook获取公共资料很难 .

我想要一个feed的页面是公共的,你不需要登录就可以了 .

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

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

  • 使用用户进行身份验证(如果用户不在Facebook上,该怎么办?)

  • 一些复杂的OAuth废话 - 只是为了阅读Feed,我甚至不想要一个像按钮或帖子到墙的功能

  • 使用用户的access_token将PHP请求获取到正确的URL

  • 渲染Feed

假设用户不在Facebook上,您做什么,使用通用应用程序获取Feed?

  • 使用我的通用应用程序的ID和密码对Facebook进行硬编码

  • 一些复杂的OAuth废话

  • 使用应用程序的access_token将PHP请求获取到正确的URL

  • 渲染Feed

  • 哦不,auth已经过期,重新验证并捕获这个新的access_token,以便在将来的请求中使用 .

这似乎非常复杂,除了Facebook想知道正在发生的一切之外,使用XPath做一个cURL并从公共URL中删除内容会更容易 .

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

谢谢,杰克

EDIT

显示此内容的编辑不完全相同 .

我有这个使用access_token,但现在它失败了,令牌已经过期,我不能再使用它从公共墙获取信息 .

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

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

3 回答

  • 0

    两年后,您可以使用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;
    }
    
  • 4

    我在阅读直接饲料时没有令牌等方面取得了一些成功(使用喜鹊,简单或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/

  • 0

    自其他答案发布以来, Facebook 已经改变了如何检索公共Facebook页面的提要 .

    看看我的answer/question . 它不是 PHP ,但它提供了您需要的 URLs 和过程 .

相关问题