我正在使用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
。我怎么能这样做?
答案 0 :(得分:2)
Facebook图表API不允许您访问random profile's public updates
。 API允许的最大值,你已经达到了它
验证我的回答
点击Get Access Token
,获取facebook图API允许的每个permissions
的令牌。 User Data Permissions
Friends Data Permissions
Extended Permissions
现在使用GET
方法,将/zuck/statuses
作为公开个人资料
你可以看到什么都不返回
{"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>";
}
}
?>