Чтение данных из графобъекта Facebook


Пользователь принял мое приложение Facebook. Теперь я могу получить доступ к некоторым их данным. Он возвращается в виде graphObject, который содержит что-то вроде:

Facebook\Объект GraphObject ([backingdata:защищенный]=>Массив ([id]=> 11111 [имя пользователя]=> Боб [пол] =>мужчина [фамилия] =>Строитель [ссылка] => https://www.facebook.com/app_scoped_user_id/11111 / [язык]=> de_DE [имя]=> Боб Строитель [часовой пояс] =>2 [обновлено время]=>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

Как я могу получить удостоверение личности?

Author: Luke, 2014-05-08

3 answers

Если вы привели ответ в виде графобъекта, используя один из следующих двух методов:

// 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 объекта graph, в зависимости от того, в качестве какого объекта вы его привели... вот пример для объекта GraphUser:

echo $user->getName();

Или, если вы знаете название свойства (как показано в базовых данных), вы можете использовать getProperty():

echo $object->getProperty('name');

Итак, в вашем примере вы можете использовать следующее, чтобы получить id свойство:

echo $user->getProperty('id');

Больше примеров и документации здесь

 13
Author: Luke, 2014-05-08 18:18:41

В новой версии Graph API getProperty не работает. Для новой версии Graph API v2.5 Facebook Читать читать данные, как показано ниже:

$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
Author: Vishal J, 2016-03-04 07:29:10

Обратите внимание, что из версии API >=5.0.0 getProperty() был переименован в getField(). Он будет удален из >=v6. Поэтому

Вместо

$user->getProperty('name')

Использовать

$user->getField('name')
 1
Author: Madan Sapkota, 2016-07-10 06:18:29