我在PHP中使用Facebook的图形API来访问用户的提要。
具体来说,我想记录发布帖子的人和在帖子中被标记的人的名字。
我已经能够通过使用以下方法检索发帖人的姓名:
getProperty('from')->getProperty('name')
但是,无论出于何种原因,我都没有成功地获得被标记的人(尽管类似地使用getProperty('to')
)。
同样,我已经能够在javascript中完成这一点(所以我相信我正确地解释了数据的结构),但不是PHP。
如果有人可以通过使用我一直使用的getProperty方法访问属性或通过另一种方式访问name属性来帮助我检索提要中标记的人的名称,那将非常感谢。
下面是我对这部分代码的最佳尝试:
/* make the API call to get home*/
$request = new FacebookRequest(
$session,
'GET',
'/me/home'
);
$response = $request->execute();
$graphObject = $response->getGraphObject();
//array of the 25 most recent posts
$dataPostArray = $graphObject->getPropertyAsArray('data');
$i = 0;
while($dataPostArray[$i])
{
//print_r($r->getProperty('name'));
if($dataPostArray[$i]->getProperty('from') )
{
echo $dataPostArray[$i]->getProperty('from')->getProperty('name');//works as intended
}
if($dataPostArray[$i]->getProperty('to') )
{
$temp = $dataPostArray[$i]->getProperty('to');
$dataToArray = $temp->getPropertyAsArray('data');
echo $dataToArray[0]->getProperty('name');
}
$i++;
}
我认为你的问题可能是getPropertyAsArray方法不是当你获得数据属性的选项。作为getProperty方法的替代方法。您可以这样做:
$graphObject = $response->getGraphObject()->asArray();
$i = 0;
while($graphObject['data'][$i])
{
if($graphObject['data'][$i]->from )
{
//echo $graphObject['data'][$i]->from->name;//will work just as you have above
}
$j = 0;
if($graphObject['data'][$i]->to->data[$j]->name )
{
echo '<pre>' . print_r( $graphObject['data'][$i]->to->data[$j]->name, 1 ) . '</pre>';
}
$i++;
}
}