Чтение данных из Facebook graphObject

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

Facebook\GraphObject Object ([backingData: protected] = > Array ([id] = > 11111 [first_name] = > Bob [gender] = > male [last_name] = > Builder [link] = > https://www.facebook.com/app_scoped_user_id/11111/ [locale] = > de_DE [name] = > Bob Builder [часовой пояс] = > 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

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

Ответ 1

Если вы выбрали ответ как объект 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 Object:

echo $user->getName();

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

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

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

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

Дополнительные примеры и документация здесь

Ответ 2

В новой версии 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

Ответ 3

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

Вместо

$user->getProperty('name')

Использование

$user->getField('name')