在Facebook PHP图API中访问属性/方法


Accessing Properties/Methods in Facebook PHP Graph API

我在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++;
    }
}