从Facebook API获取随机用户的公开信息

时间:2014-01-09 03:04:29

标签: php facebook facebook-php-sdk

我想获得一些随机用户的最新帖子(诅咒的公开帖子)。我认为既然他们是公开的帖子,我不需要得到所有者的许可。这是我的代码:

function fetchUrl($url){
return file_get_contents($url);
}

$profile_id = "4";

$app_id     = "****";
$app_secret = "****";

$authToken = fetchUrl("https://graph.facebook.com/oauth/access_token?grant_type=client_credentials&client_id={$app_id}&client_secret={$app_secret}");

$json_object = fetchUrl("https://graph.facebook.com/{$profile_id}/posts?{$authToken}");
$feedarray   = json_decode($json_object , true );

foreach ( $feedarray as $feed_data )
{
    var_dump( $feed_data);
}

它返回有关用户活动的一些数据,但没有关于帖子!

以下是示例

这是我的fb acc(我很少使用它),我刚刚发布了帖子(test3) https://www.facebook.com/Hereticcc

当我使用我的帐户ID

运行此代码时
$json_object = fetchUrl("https://graph.facebook.com/{$profile_id}/posts?{$authToken}&limit=50");
$feedarray   = json_decode($json_object , true );
foreach ( $feedarray['data'] as $k=>$v )
{
/// var_dump( $v['story']);
echo  $v['story']; echo '<br />';
}

这是我得到的!我没有添加只喜欢和友谊的帖子没有迹象

Mj Tb Z likes Facebook Developers.
Mj Tb Z and Ahmad Masajedi are now friends.
Mj Tb Z and Di M AH are now friends.
Mj Tb Z likes Cult of Luna.
Mj Tb Z likes a link.
Mj Tb Z likes a status.
Mj Tb Z likes a link.
Mj Tb Z and Eh San Mans are now friends.
Mj Tb Z likes a link.
Mj Tb Z likes Mist Within.
Mj Tb Z likes Filmhaa.
Mj Tb Z likes a link.
Mj Tb Z and Mamad RJ are now friends.
Mj Tb Z likes a link.
Mj Tb Z is now using Facebook in English (US).
Mj Tb Z is now friends with Mushu Khoshbakht and Samin Zavarkesh.
Mj Tb Z likes a photo.
Mj Tb Z updated his cover photo.
Mj Tb Z and Mohammad Khoshbakht are now friends.

我尝试过FQL

这是我的代码

$authToken = fetchUrl("https://graph.facebook.com/oauth/access_token?grant_type=client_credentials&client_id={$app_id}&client_secret={$app_secret}");

     echo $fql_query_url = 'https://graph.facebook.com/'
        . 'fql?q=SELECT+message+FROM+stream+WHERE+source_id=4'
        . '&' . $authToken;

        echo '<br />';
      $fql_query_result = fetchUrl($fql_query_url);
      $fql_query_obj = json_decode($fql_query_result, true);

      echo '<pre>';
      print_r("query results:");
      print_r($fql_query_obj);
      echo '</pre>';

结果如下:

https://graph.facebook.com/fql?q=SELECT+message+FROM+stream+WHERE+source_id=4&access_token=284654551659478|D7T6A1uMSr1Qm1LLFBB9CQk_vK8

query results:Array
(
    [data] => Array
        (
        )

)

1 个答案:

答案 0 :(得分:2)

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

使用有效的访问令牌,您可以通过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​​,因为其访问权限有限。