从Facebook GraphObject检索数据

时间:2015-01-25 17:04:03

标签: php arrays facebook-php-sdk

我环顾四周并尝试了几件事,将其转换为数组并尝试直接访问该对象。

我想取出页面ID,名称和访问令牌。

这是我的代码,用于获取我关注的页面的对象:

$request = new FacebookRequest($session, 'GET', '/'.$userID .'/accounts');

$response = $request->execute();
$graphObject = $response->getGraphObject();

我使用$array = (array) $graphObject;得到以下数组:

Array([*backingData] => Array(
    [data] => Array(
        [0] => stdClass Object(
            [access_token] => CAAVOhgjThxcBAOZB61QxkxI1qdhZCngNZADQloUasFpTRCoZC7hYiDydjXQ9U0vQIjUMyZAeb6aGLKi7VE1btwk8eOPnsEzxyZPhJV1GVoujWlbb6PHo44yIi3D5VPSBRJJuNUOXobSgQNAevpSDZBgZDZD
            [category] => Organization
            [category_list] => Array(
                [0] => stdClass Object(
                    [id] => 19850828628
                    [name] => Organization
                )
            )

            [name] => Side Pot Cavan
            [id] => 67433931
            [perms] => Array(
                [0] => ADMINISTER
                [1] => EDIT_PROFILE
                [2] => CREATE_CONTENT
                [3] => MODERATE_CONTENT
                [4] => CREATE_ADS
                [5] => BASIC_ADMIN
            )
        )

        [1] => stdClass Object(
            [access_token] => CAAVOhgjThxcBAD7t6VU3HJAz9AovBJ7OiNzeFRBEQcHDEyHzRmi8oZBMnUyBQHxqNPeTXZBzWaOhCs2ivNWVvHwi5MGJpAuzgsP3d3cVq4LYZBsxcQQbmB5ufZAct250ZBhfENZCFCZAqAPaWvhGFpI5FzM38PwEIZCIZAtdtcvQZC0gZDZD
            [category] => Cause
            [name] => James Morgan
            [id] => 2773587
            [perms] => Array(
                [0] => ADMINISTER
                [1] => EDIT_PROFILE
                [2] => CREATE_CONTENT
                [3] => MODERATE_CONTENT
                [4] => CREATE_ADS
                [5] => BASIC_ADMIN
            )
        )

        [2] => stdClass Object(
            [access_token] => CAAVOhgjThxcBAIdnByW9TV7ZAxOnBS42nZAWDFEHeb3hPe5lTEMVwzBuZBMiPB99qOM1ks8VafDxLIZBbZCHe8tkDrtjRcPw8DUtpvnBUsNWvqKxt4y7oub10SgHqxRS194At5HBTLJ0K4vpo7qWaXZCIJwZDZD
            [category] => Sports venue
            [name] => Galway Poker Festival
            [id] => 9751854
            [perms] => Array(
                [0] => ADMINISTER
                [1] => EDIT_PROFILE
                [2] => CREATE_CONTENT
                [3] => MODERATE_CONTENT
                [4] => CREATE_ADS
                [5] => BASIC_ADMIN
            )
        )

我已经在这里编辑了ID和令牌供公众使用。

我确信我只是错过了获得这些价值的下一个技巧。

2 个答案:

答案 0 :(得分:1)

您可以使用方法getProperty()getPropertyAsArray()来获取GraphObject的值。如果您想知道有哪些属性,请使用getPropertyNames()

由于这是一个数据数组(用户管理多个页面),因此可能更容易将其用作简单数组,就像您尝试的那样 - 有一个名为asArray()的方法可以确切地说:

$graphObject = $response->getGraphObject();
$data = $graphObject->asArray();

以下是Facebook GraphObject类的参考:https://developers.facebook.com/docs/php/GraphObject/4.0.0

答案 1 :(得分:0)

所以我从上面的答案中得到了一个线索并继续前进:

我完成的代码是:

foreach($ data as $ key => $ value){

if (is_array($value)) {
    foreach ($value as $invalue) {
        $array =  (array) $invalue;


        foreach ($array as $key2 => $value2) {
            if ($key2=='access_token') {
                $c++;
                $ats[$c]=$value2;

            }
            if ($key2=='name') {

                $pagenames[$c]=$value2;

            }
            if ($key2=='id') {

                $ids[$c]=$value2;   

            }
        }

    }
}

}

所以我从$ data = $ graphObject-> asArray()获得了一个很好的干净数组;

然后继续进行。

数组中有另一个对象,所以我将数组转换为数组,然后在其上运行foreach循环以获取我想要的键。

不是最漂亮但是它完成了这项工作。

感谢