使用php解析facebook用户时间线

时间:2014-02-26 04:38:30

标签: php facebook facebook-graph-api

我正在使用php获取用户/页面facebook时间线的Feed。到目前为止,我必须这样做:

<?php
    require 'src/facebook.php';
    $facebook = new Facebook(array(
      'appId'  => 'xxx',
      'secret' => 'xxx',
    ));
    $username = isset($_GET['username'])?$_GET['username']:"agptj";
    $profile = $facebook->api('/'.$username.'/posts');
?>

<br/><br/><img src="https://graph.facebook.com/<?=$username?>/picture">

<?php
    foreach( $profile['data'] as $data ){
        if($data['message']){
            echo $data['message']."<br><hr><br>";
        }else{
            echo $data['story']."<br><hr><br>";
        }
    }
?>

这适用于页面:$username = "mashable"。但是,当我尝试对配置文件执行相同操作时,它会显示activity log而不是状态更新。例如:$username = "agptj"

输出:

Prakash Timilsina updated his cover photo.

如何使用php获取状态更新而不是配置文件的活动日志?

修改

$loginUrl = $facebook->getLoginUrl(array(
        'scope' => 'read_stream')
);

使用范围read_stream登录并查找/statuses

$profile = $facebook->api('/'.$username.'/statuses');

让我访问自己的个人资料和我朋友的个人资料状态,但不允许我read random person's public updates。我怎么能这样做?

5 个答案:

答案 0 :(得分:2)

Facebook图表API不允许您访问random profile's public updates。 API允许的最大值,你已经达到了它

验证我的回答

  1. 打开图表浏览器:https://developers.facebook.com/tools/explorer/

  2. 点击Get Access Token,获取facebook图API允许的每个permissions的令牌。 User Data Permissions Friends Data Permissions Extended Permissions

  3. 现在使用GET方法,将/zuck/statuses作为公开个人资料

  4. 你可以看到什么都不返回

    {"data": []}

答案 1 :(得分:2)

未经他/她许可,您无法为随机用户阅读帖子的摘要(包括其公开的状态更新)。您需要拥有read_stream权限的用户的有效User Access Token才能执行此操作。

使用有效的访问令牌,您可以通过使用Graph API或在stream表上使用FQL查询来为特定用户或他/她的朋友实现此目的。您可以使用如下查询:

SELECT post_id, message FROM stream WHERE source_id = {User_ID} LIMIT 50 

或者,如果您特别关注用户或他/她的朋友的状态,您可以使用status表格,如:

SELECT status_id, message FROM status WHERE uid = {User_ID} LIMIT 50

但是有一种方法可以在用户状态更新和页面状态更新发布到Facebook时读取它们。这可以通过使用Public Feed API来完成。但这只包括将其隐私设置为“公共”的状态更新包含在流中。此外,您目前无法申请使用API​​,因为其访问权限有限。

答案 2 :(得分:0)

使用/ status而不是/ posts。

答案 3 :(得分:0)

Prakash,我很遗憾地告诉您,即使此状态的隐私是公开的,您也无法访问随机用户的状态,除非您获得该用户的有效访问令牌或访问其中一位朋友的令牌。我现在这个答案与之前的一些答案具有相同的意思,但我写了这些答案以确认这些答案。

我有一个问题,先生,普拉卡什先生。你可以提供给我们,你想要的是什么?也许我们找到了另一种方法。

答案 4 :(得分:-1)

<?php
    require 'src/facebook.php';
    $facebook = new Facebook(array(
      'appId'  => 'xxx',
      'secret' => 'xxx',
    ));
    $username = isset($_GET['username'])?$_GET['username']:"agptj";
    $profile = $facebook->api('/'.$username.'/statuses');
?>

<br/><br/><img src="https://graph.facebook.com/<?=$username?>/picture">

<?php
    foreach( $profile['data'] as $data ){
        if($data['message']){
            echo $data['message']."<br><hr><br>";
        }else{
            echo $data['story']."<br><hr><br>";
        }
    }
?>