用户已接受我的Facebook应用。我现在可以访问他们的一些数据。它以graphObject
的形式返回,其中包含以下内容:
Facebook \ GraphObject对象([backingData:protected] =>数组([id] => 11111 [first_name] => Bob [性别] =>男[last_name] =>构建器[link] = > https://www.facebook.com/app_scoped_user_id/11111/ [locale] => de_DE [name] => Bob Builder [timezone] => 2 [updated_time] => 2014-02-14T14:35:54 + 0000 [已验证] = > 1))
不幸的是我无法获取此对象内的数据。像数组一样读取它会引发错误:
$fbid = $graphObject['id']; // Cannot use object of type Facebook\GraphObject as array
$fbid = $graphObject->id; // Undefined property: Facebook\GraphObject::$id
答案 0 :(得分:13)
如果您使用以下两种方法之一将响应作为GraphObject转换:
// Get the response typed as a GraphLocation
$loc = $response->getGraphObject(GraphLocation::className());
// or convert the base object previously accessed
// $loc = $object->cast(GraphLocation::className());
您可以使用图表对象的Get
属性,具体取决于您将其输入的对象类型...这里是GraphUser
对象的示例:
echo $user->getName();
或者,如果您知道属性的名称(如基础数据中所示),则可以使用getProperty()
:
echo $object->getProperty('name');
因此,在您的示例中,您可以使用以下内容获取id
属性:
echo $user->getProperty('id');
答案 1 :(得分:2)
在图形API的新版本getProperty
不起作用。
对于Facebook的新版Graph API v2.5读取读取数据如下:
$fb = new \Facebook\Facebook([
'app_id' => 'APPIDHERE',
'app_secret' => 'SECRET HERE',
'default_graph_version' => 'v2.5',
]);
$asscee_t ="ACCESS TOKEN HERE";
$response = $fb->get('/me/friends', $asscee_t);
$get_data = $response->getDecodedBody(); // for Array resonse
//$get_data = $response->getDecodedBody(); // For Json format result only
echo $get_data['summary']['total_count']; die; // Get total number of Friends
答案 2 :(得分:1)
请注意,从API版本> = 5.0.0 getProperty()
已重命名为getField()
。它将从> = v6中删除。所以
而不是
$user->getProperty('name')
使用
$user->getField('name')